我有Odoo中的下一张桌子,名为关系,它来自桌子女孩和桌子男孩之间的关系:如何在OpenERP/Odoo上设置这个特定的域名?
| girl_id | boy_id | relationship_type |
| 1 | 2 |朋友|
| 1 | 3 |兄弟姐妹|
| 2 | 7 |恋人|
所以:
- 在表中的女孩有一个领域的关系是指向表关系的one2many 。
- 在表格男孩中,有一个字段关系,它是指向表关系的一个文件夹 。
- 在表格关系中有两个字段,分别指向表女孩和男孩的两个字段,girl_id和boy_id, 。
场景:
在女孩和男孩的形式有外地的关系。当我为女孩或男孩添加新的关系时,会打开表单以填充表关系的字段(girl_id,boy_id和relationship_type)。想象一下,我是一个女孩的形式,我点击添加一个新的关系,并打开表格。我实现了这个目的是为了不看到girl_id(它是不可见的,但它包含了当前女孩的ID)。所以我只能看到两个字段(boy_id和relationship_type)。
我想要什么:
保持与上例中,如果我打开boy_id的下拉列表中,我会看到所有的男孩,甚至谁已经涉及到这个女孩的人。例如,如果我为ID为1的女孩添加关系,我不会看到带有ID 2和ID 3的男孩,如果女孩是ID 2的男孩,我不会看到ID为7的男孩。
我尝试
我在表关系创建了两个领域,一个名为boys_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')
我认为你需要采取many2many而不是one2many,而m2m默认提供了你想要的。 – 2015-04-01 09:14:51
谢谢@EmiproTechnologies。但是many2many字段只生成一个只包含外部标识的表,不可能添加更多列(例如,在这种情况下,relationship_type) – forvas 2015-04-01 11:00:52
您能向我展示所有这些模型的字段结构吗? – 2015-04-01 12:10:51