如何获取函数中字段的旧值 - Odoo 12
How to get old value of a field in a fucntion - Odoo12
我试图在 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' object has no attribute '_origin''
你可以在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)
我试图在 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' object has no attribute '_origin''
你可以在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)