假设我有三个对象 A,B,C ,其关系一个 A 到多个 B ,一个 A 到很多 C 。这自然意味着存在许多 B 与许多 C 的关系,但其含义显然无法被计算机识别。
问题是,
(i)如何定义这个many2many以便它尊重通过现有关系给出的链接?
(ii)是否有任何特殊方法在表格视图中为每个对象 B 和 C 显示所述关系?
(iii)这是否有可能是一个很多关系的意义,我应该浏览文档中过多的不存在的例子?
答案 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
添加到字段定义中,以将关系存储在自己的数据库表中,以便于搜索和查询。