如何获取函数中字段的旧值-Odoo12

如何获取函数中字段的旧值-Odoo12,odoo,odoo-12,Odoo,Odoo 12,我试图在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]["assig

我试图在
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.dependens
尝试了compute函数

那一次我得到了一个

'AttributeError:'crm.lead'对象没有属性'\u origin''


您可以在write方法中实现它,并且将始终有效,您可以保留onchange 如果要向用户提供反馈,请执行以下操作:

@api.multi
def写入(VAL):
“”“保留作业历史记录。”“”
如果VAL中的“分配对象”:#保留分配历史记录
#不用把它放在这里的VAL里
vals.pop('last\u assign\u id',None)
对于rec in self:
rec.last\u assign\u id=rec.assigned\u to
返回super(ClassName,self).write(VAL)

最后,分配给您的
将按照
write()
写入,因此我将在
write()
中实现您的逻辑,而不是在“onchange”环境中正确执行。button这个东西不起作用,因为在调用按钮定义的任何内容之前,有一个对
write()
的调用。