Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
2 Risposte
5106 Visualizzazioni

Hello!

I have a table like this:

row_numbersome_data_1some_data_2
1

2


And I want the row_number to be automatically set to values ​​starting from 1


How can I do it?

What code can I write in "Advanced Properties - Compute" on the row_number field?


I tried to do like this:

increment = 1
for record in self:
record['row_number'] = increment
increment = increment + 1

But when trying to add new lines - new lines start at 1 again


Help, please!

Avatar
Abbandona
Risposta migliore
Using Odoo Sequence you can implement your idea 
firs create the sequence using xml code
then in py file call you sequence like following cod:

@api.model
def create(self, vals):
vals['row_number'] = self.env['model.model'].next_by_code('cod.cod')
return super(ClassName, self).create(vals)


Avatar
Abbandona
Risposta migliore

Hi!

Why don't you just retrieve the id of the record :)? When a new record is created, Odoo will automatically give it as an ID the next number in the list (so that it's always unique). You can retrieve it with record.id.

You may also have a look at the Getting Started tutorial in Odoo Docs if you haven't already ;) :https://www.odoo.com/documentation/15.0/developer/howtos/rdtraining/04_basicmodel.html

Hope this helps!

Best,

Fabio

Avatar
Abbandona
Autore

I had an attempt to do it with code like this, however it throws an error because record.id is not "int" at this point:
id_on_start = record.id
for record in self:
record ['row_number'] = int (record.id) - int (id_on_start) + 1

If you know the code with which I was able to get the id of the created record of type "int" I will be very grateful. Or if you can suggest another way - I will be very happy

Post correlati Risposte Visualizzazioni Attività
0
ott 15
4260
2
nov 22
7166
2
dic 23
4781
3
feb 17
6724
1
lug 25
2234