Many2many作为两个One2many的'组成'

时间:2016-08-25 08:05:29

标签: openerp odoo-8

假设我有三个对象 A,B,C ,其关系一个 A 到多个 B ,一个 A 到很多 C 。这自然意味着存在许多 B 与许多 C 的关系,但其含义显然无法被计算机识别。

问题是,

(i)如何定义这个many2many以便它尊重通过现有关系给出的链接?

(ii)是否有任何特殊方法在表格视图中为每个对象 B C 显示所述关系?

(iii)这是否有可能是一个很多关系的意义,我应该浏览文档中过多的不存在的例子?

1 个答案:

答案 0 :(得分:1)

您应该能够定义使用 B C 之间关系的相关fields.Many2many。请参阅:Related Fields Documentation

例如:

Model_A:
    b_ids = fields.One2many(comodel_name='B',
                            inverse_name='a_id')
    c_ids = fields.One2many(comodel_name='C',
                            inverse_name='a_id')
Model_B:
    a_id = fields.Many2one(comodel_name='A')
    c_ids = fields.Many2many(comodel_name='C',
                             related='a_id.c_ids')
Model_C:
    a_id = fields.Many2one(comodel_name='A')
    b_ids = fields.Many2many(comodel_name='B',
                             related='a_id.b_ids')

一旦您定义了相关字段,所有正常的Many2many交互都将起作用(视图,ORM等)。您可以将store=True添加到字段定义中,以将关系存储在自己的数据库表中,以便于搜索和查询。