1
我在樹結構中有一些數據。使用來自孩子的數據計算(未存儲)一個字段。 在表單視圖中,我顯示了計算字段和父字段。因此,我最終從模型中讀取了很多記錄 - 而且Odoo似乎計算了所有這些記錄的計算字段,即使視圖只需要一個記錄的計算字段。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" />
它也計算爲所有父母的孩子。
謝謝您的回答,但我不能看到@ api.depends裝飾怎麼會少給我的計算... 有用於計算相關記錄的字段不是一個問題 - 有外地來計算只有相關的記錄是一個問題。 – cgs
看到這個鏈接https://github.com/odoo/odoo/blob/9.0/openerp/api.py#L169-L191 –
我真的看不到如何裝飾將限制計算。如果修飾器列表中提到的字段發生變化,記錄將被重新計算,但它將如何改變第一次計算? – cgs