我有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