我在 Odoo 中有下一张表,命名为关系,它来自餐桌女孩和餐桌男孩之间的关系:
| girl_id | 男孩ID | 关系类型 |
| 1 | 2 | 朋友 |
| 1 | 3 | 兄弟姐妹 |
| 2 | 7 | 恋人|
所以:
- 在表女孩中有一个字段关系,它是一个指向表关系的one2many。
- 在表男孩中有一个字段关系,它是一个指向表关系的 one2many。
- 在表关系中有两个字段,girl_id 和boy_id,分别指向表girl 和boy。
设想:
以女孩和男孩的形式存在着领域关系。当我为女孩或男孩添加新关系时,会打开一个表单来填写表关系的字段(girl_id、boy_id 和 relationship_type)。想象一下我是一个女孩的形式,我点击添加新关系并打开表格。我实现了这个是为了不看到girl_id(它是不可见的,但它包含当前女孩的ID)。所以我只能看到两个字段(boy_id 和 relationship_type)。
我想要的是:
继续这个例子,如果我打开 boy_id 的下拉菜单,我会看到所有的男孩,甚至那些已经与这个女孩有关系的男孩。例如,如果我要向 id 1 的女孩添加关系,我不能看到 id 2 和 3 的男孩,如果女孩是 id 2 的那个,我不能看到 id 7 的男孩。
我的尝试
我在关系表中创建了两个字段,分别命名为 boy_of_the_girl(one2many 与“girl_id.relationships”相关)和girls_of_the_boy(one2many 与“boy_id.relationships”相关)。
我的代码:(例如:为女孩建立关系)
<field name="girl_id" invisible="1"/>
<field name="boys_of_the_girl" invisible="1"/>
<field name="boy_id" domain="[('id', 'not in', boys_of_the_girl)]"/>
<field name="relationship_type"/>
错误:
RuntimeError:调用 Python 对象时超出最大递归深度
任何人都可以帮助我吗?谢谢!
编辑
餐桌男孩
relationships = fields.One2many(comodel_name='relationship',
inverse_name='boy_id',
string='Relationships')
表妹_
relationships = fields.One2many(comodel_name='relationship', inverse_name='girl_id', string='Relationships')
表关系
boy_id = fields.Many2one(comodel_name='boy', string='Boy', required=True)
girl_id = fields.Many2one(comodel_name='girl', string='Girl', required=True)
relationship_type = fields.Char(string='Relationship type')