Odoo性能,限制@depends('item.state')如果item.state='draft'不被触发?

Odoo performance, restrict @depends('item.state') not to be triggered if item.state='draft'?

我的问题是,当我创建新项目时,它从 'draft' 开始;所以它触发了@depends(没用,因为它不使用草稿项目)。

如何让我的@depends 在添加 'draft' 项时跳过触发?

您可以通过子模型写入函数手动触发它。

def write(self, values):
    res = super(YourClass, self).write(values)
    if 'state' in values and values['state'] in ('ok', 'canceled'):
        for rec in self:
            rec.parent_class_id.function_to_triger()
    return res

简短的回答:你不能。

长答案:您的计算方法可以从以下内容开始:

for one in self:
    if one.state == 'draft':
        continue
    one.do_things()

...或类似的东西(不能 100% 正确,因为没有代码示例)以避免在草稿记录中做事。

这个简单的语句将避免不必要的计算成本。