hello everyone !
I would like to call the method of another model in the compute attribute of a field. is it possible, if so how to do it ?
here is a example of my code:
##########################################
class account(models.Model):
_name = 'pers_io_money.account'
credit = fields.Float( compute="pers_io_money.event._credit_account" )
++++++++++++++++++++++++++++++++++++
class event(models.Model):
_name = 'pers_io_money.event'
amount = fields.Float( )
account_id = fields.Many2one( 'pers_io_money.account', String="account")
@api.depends('account_id')
def _credit_account(self):
if (self.account_id is not False) :
self.account_id.credit = self.amount
###########################################
when I execute the code above, I get the following error:
Traceback (most recent call last):
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/api.py", line 1039, in get
value = self._data[key][field][record._ids[0]]
KeyError: 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/fields.py", line 976, in __get__
value = record.env.cache.get(record, self)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/api.py", line 1041, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('pers_io_money.account(1,).credit', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 654, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 312, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 696, in dispatch
result = self._call_function(**self.params)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 344, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 337, in checked_call
result = self.endpoint(*a, **kw)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 939, in __call__
return self.method(*args, **kw)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/http.py", line 517, in response_wrap
response = f(*args, **kw)
File "/home/kaly-7/odoo -dev/odoo-12.0/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/api.py", line 749, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/api.py", line 736, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/models.py", line 2782, in read
vals[name] = convert(record[name], record, use_name_get)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/models.py", line 5087, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/fields.py", line 980, in __get__
self.determine_value(record)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/fields.py", line 1091, in determine_value
self.compute_value(recs)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/fields.py", line 1047, in compute_value
self._compute_value(records)
File "/home/kaly-7/odoo -dev/odoo-12.0/odoo/fields.py", line 1038, in _compute_value
getattr(records, self.compute)()
AttributeError: 'pers_io_money.account' object has no attribute 'pers_io_money.event._credit_account'