İçereği Atla
Menü
Bu soru işaretlendi
1 Cevapla
9067 Görünümler

Dear all,

I am using Odoo 12 and stucked with a "compute" method set on a field.
My problem is on "write" method. Odoo is calling again the same "compute" method and overriding user entered data.

My field is declared as:

myfield = fields.Char('My field', compute='_get_value', readonly=False, store=True)

def _get_values(self)
    #Code here that sets a default value to "myfield" field and working as expected
    

My problem is this "_get_value" method is called on write method and overrides user entered data.

I have played around with some print() statements and can see that this "_get_value" method runs on form load and also on write method.

Also tried to add:

@api.depends('myfield')
def _get_values(self)
    #...

... at the begging of "_get_value" method with no success!

How can I prevent this "_get_value" compute method to run always, or at least at "write" method?

Thank you all in advance

Best regards

PM


Avatar
Vazgeç
En İyi Yanıt

Hi Paulo,

You may try to use `write_uid` or `write_date` in depends of the compute method.

These 2 fields will always be updated whenever any change is made and saved.

Ex:

@api.depends('write_date', 'write_uid')


Avatar
Vazgeç
Üretici

@Sudhir Arya,

Thank you very much.

Using your approach I am able to achieve what I need.

Now the compute method only runs on form load.

Thank you very much

İlgili Gönderiler Cevaplar Görünümler Aktivite
1
May 19
4591
1
Haz 25
15187
1
Nis 25
3403
3
Nis 25
5298
Compute Fields Çözüldü
2
Tem 24
2175