如果在 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 是函数字段,这将不起作用。在这种情况下,您应该覆盖该函数。
我正在使用 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 是函数字段,这将不起作用。在这种情况下,您应该覆盖该函数。