odoo-048 product.template和product.product中的同一个o2m字段断开关联,单独设置值
文章目录
- 问题描述
- 解决思路
- 代码实现
- 总结
问题描述
product.template
有 one2many
字段 x_group_lines
,有继承关系的product.product
也有这个字段,需求是:产品和变体都单独设置这个字段的值,互不影响,两个之间不要有关联。
解决思路
通常情况下,product.product
会继承 product.template
的属性,但可以通过覆盖或重新定义来实现不同的值。
代码实现
- 下面是
product.template
中的one2many
字段及对应模型
class ProductTemplate(models.Model):_inherit = 'product.template'x_group_lines = fields.One2many('product.group.line', 'product_template_id', ' Group Lines')class ProductGroupLine(models.Model):_name = 'product.group.line'_description = 'Product Group Line'product_template_id = fields.Many2one('product.template', 'Product Template', ondelete="cascade")product_id = fields.Many2one('product.product', 'Product', ondelete="cascade") # 因为需求新增字段group_id = fields.Many2one('x.group', 'Group')
- 下面是
product.product
中重写的one2many
字段
class ProductProduct(models.Model):_inherit = 'product.product'x_group_lines = fields.One2many('product.group.line', 'product_id', 'Group Lines')
总结
改变对象关联的字段,一个是跟 product_template_id
, 一个跟product_id
关联,这样数据就都是独立的,变体中每个产品变体都可以单独设置自己的 x_group_lines
值。