我正在尝试使用onchange
方法获取字段的旧值。
这是我尝试过的。
@api.onchange('assigned_to')
# @api.depends('assigned_to')
def onchange_assigned_to(self):
print('onchange_assigned_to')
history = self._origin.read(["assigned_to"])
if history:
id = history[0]["assigned_to"][0]
last_assigned = self.env['res.users'].browse([id])
self.last_assign_id = last_assigned
上面的代码有效,并且只有通过GUI更改字段值时,我才能获得旧值。
我还在通过按钮操作更改字段值。那时候该功能不起作用。
我该如何实现?
我还尝试了@api.depends
的计算功能。
那个时候我得到了
'AttributeError:'crm.lead'对象没有属性'_origin'
答案 0 :(得分:1)
您可以在write方法中实现此方法,并且将始终有效,可以保持onchange 如果您想给用户反馈:
@api.multi
def write(vals):
""" keep assignment history. """
if 'assigned_to' in vals: # keep assignment history
# no need to keep it in vals here
vals.pop('last_assign_id', None)
for rec in self:
rec.last_assign_id = rec.assigned_to
return super(ClassName, self).write(vals)