如果在 Odoo 8 中修改了字段,如何执行特定功能?

How to execute a specific function if a field is modified in Odoo 8?

我正在使用 product.product 对象。它有一个名为qty_available的字段,正如其名称所示,它表示库存产品的可用数量。

通常,我会在要执行的方法中添加一个 @api.depends('qty_available') 装饰器。但我认为除非我创建一个调用它的计算字段,否则不会执行此方法。问题是字段 qty_available 可以从许多不同的视图中进行修改,修改每个视图以添加计算字段会非常不舒服。

有什么正确的方法吗?

如果在写的时候需要写而不是创建,可以重新定义write函数并检查是否正在写该字段。

@api.multi
def write(self, values):

    if values.get('qty_available'):

        #Your function here

    return super(ResPartner, self).write(values)

由于 values 包含一个字典,其中包含正在更改的字段,因此只有 qty_available 发生更改时才会 运行。请注意,如果 qty_available 是函数字段,这将不起作用。在这种情况下,您应该覆盖该函数。