Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
4513 Vistas

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
Descartar
Mejor respuesta
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
Descartar
Mejor respuesta

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
Descartar
Autor

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

Publicaciones relacionadas Respuestas Vistas Actividad
0
oct 15
3789
2
nov 22
6705
2
dic 23
4296
3
feb 17
6337
0
may 25
12