【发布时间】:2015-12-21 22:09:19
【问题描述】:
我有一些树结构的数据。使用来自子项的数据计算(不存储)其中一个字段。 在表单视图中,我显示了计算域和父域。
因此,我最终从模型中读取了许多记录 - 而 Odoo 似乎为所有这些记录计算了计算域,即使视图只需要一条记录的计算域。
我认为这是由预取机制引起的,但我尝试在上下文中设置prefetch_fields=False,但没有帮助。
知道如何避免计算所有不必要的值吗? (存储计算域不是一种选择)。
一个简单的例子来说明构造:
parent_id = fields.Many2one(...)
child_ids = fields.One2many(...) # Inverse parent relation
comp = fields.Integer(compute="_compute_comp")
@api.one
def _compute_comp(self):
sum = 0
for c in self.child_ids:
sum += c._get_complicated_value()
self.comp = sum
和一个视图:
<field name="parent_id" />
<field name="comp" />
comp 总是为孩子的孩子计算。使用<field name="parent_id" /> 也会为所有父母的孩子计算。
【问题讨论】: