Odoo性能,限制@depends('item.state')如果item.state='draft'不被触发?
Odoo performance, restrict @depends('item.state') not to be triggered if item.state='draft'?
- A parent class 有一大组 项 (One2many)。
- 它还有一个耗时的@depends 函数,用于他的状态为 ['ok', 'canceled'] 的项目,但确实如此不适用于状态 ['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% 正确,因为没有代码示例)以避免在草稿记录中做事。
这个简单的语句将避免不必要的计算成本。
- A parent class 有一大组 项 (One2many)。
- 它还有一个耗时的@depends 函数,用于他的状态为 ['ok', 'canceled'] 的项目,但确实如此不适用于状态 ['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% 正确,因为没有代码示例)以避免在草稿记录中做事。
这个简单的语句将避免不必要的计算成本。