Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
2 Vastaukset
4518 Näkymät

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
Hylkää
Paras vastaus
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
Hylkää
Paras vastaus

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
Hylkää
Tekijä

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

Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
0
lokak. 15
3789
2
marrask. 22
6708
2
jouluk. 23
4298
3
helmik. 17
6339
0
toukok. 25
12