跳至内容
菜单
此问题已终结
2 回复
20257 查看

@api.depends("product_tmpl_id")

def _computeBOMLine(self):

for record in self:

bom_lines = record.product_tmpl_id.bom_ids.mapped("bom_line_ids").filtered(lambda x: record.id in x.bom_product_template_attribute_value_ids.ids)

if any(bom_lines):

record.computed_bom_line_id = bom_lines[0].id

else:

record.computed_bom_line_id = False


computed_bom_line_id = fields.Many2one("mrp.bom.line",compute="_computeBOMLine", store=True)


Compute method is not getting called, unless I remove store attribute nothing happens.

形象
丢弃
最佳答案

Hi,
If you have a compute field in your model and if you give store=True for the field, the field value will not get recomputed if proper depends is not given for the compute function. As the compute function is not getting recomputed you will have wrong value in the field.

See:-  Why Stored Computed Fields Are Not Recomputing in Odoo


Thanks

形象
丢弃
编写者 最佳答案

Hi,

yes It was related to store=True. I had to remove it since I couldn't figure out any other hook point to trigger it.


Thanks for the response.


Regards,

Sunil

形象
丢弃
相关帖文 回复 查看 活动
0
5月 20
2550
2
12月 24
14907
2
2月 25
7394
0
10月 20
3477
0
3月 24
1186