如何在功能中获取字段的旧值-Odoo12

时间:2019-09-30 06:42:25

标签: 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]["assigned_to"][0]
        last_assigned = self.env['res.users'].browse([id])
        self.last_assign_id = last_assigned        

上面的代码有效,并且只有通过GUI更改字段值时,我才能获得旧值。

我还在通过按钮操作更改字段值。那时候该功能不起作用。

我该如何实现?

我还尝试了@api.depends的计算功能。

那个时候我得到了

  

'AttributeError:'crm.lead'对象没有属性'_origin'

1 个答案:

答案 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)