Перейти к содержимому
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
2 Ответы
5105 Представления

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!

Аватар
Отменить
Лучший ответ
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)


Аватар
Отменить
Лучший ответ

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

Аватар
Отменить
Автор

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

Related Posts Ответы Просмотры Активность
0
окт. 15
4260
2
нояб. 22
7166
2
дек. 23
4781
3
февр. 17
6723
1
июл. 25
2233