Odoo性能,如果item.state=';草案';? 父类有一大组项(One2many) 它还具有一个耗时的@depends函数,该函数可用于状态为['ok'、'Cancelled']但不适用于状态为['draft']的项目

Odoo性能,如果item.state=';草案';? 父类有一大组项(One2many) 它还具有一个耗时的@depends函数,该函数可用于状态为['ok'、'Cancelled']但不适用于状态为['draft']的项目,odoo,Odoo,我的问题是,当我创建一个新项目时,它从“草稿”开始;因此它触发@depends(无用,因为它不使用草稿项) 如果添加了“草稿”项,如何使my@跳过触发?您可以从子模型写入功能手动触发它 def write(self, values): res = super(YourClass, self).write(values) if 'state' in values and values['state'] in ('ok', 'canceled'): for rec i

我的问题是,当我创建一个新项目时,它从“草稿”开始;因此它触发@depends(无用,因为它不使用草稿项)


如果添加了“草稿”项,如何使my@跳过触发?

您可以从子模型写入功能手动触发它

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

您可以通过子模型写入功能手动触发它

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%正确,因为没有代码示例)来避免在草稿记录中执行操作


这句简单的话可以避免不必要的计算成本。

简单的回答是:你不能

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

for one in self:
    if one.state == 'draft':
        continue
    one.do_things()
。。。或者类似的方法(不能100%正确,因为没有代码示例)来避免在草稿记录中执行操作

这一简单的声明将避免不必要的计算成本