我有两个many2many
相关字段,我们称它们为field_one
和field_two
,还有一个many2many
,我们称之为field_three
。
这是三个字段的定义:
field_one = fields.Many2many(comodel_name="res.partner", related="project_id.field_one")
field_two = fields.Many2many(comodel_name="res.partner", related="project_id.field_two")
field_three = fields.Many2many(comodel_name="res.partner", relation="acco", column1="ac", column2="co")
当用户想在res.partner
中添加伙伴(field_three
)时,field_one
和field_two
中已经存在的伙伴不应该在field_three
的scrooling列表中。
我该怎么做?非常感谢。<< / p>
我使用了api.onchange("field_one", "field_two")
,但是它不起作用。
PS:这里是"project.task"
模式。
答案 0 :(得分:0)
您好,请存储field_one和field_two。
field_one = fields.Many2many(comodel_name="res.partner", related="project_id.field_one", store=True)
field_two = fields.Many2many(comodel_name="res.partner", related="project_id.field_two", store=True)
答案 1 :(得分:0)
使用XML域:
对于旧版本的Odoo(我认为<11),有一个解决方案:
<field name="field_three"
....
....
domain = [('id', 'not in' , field_one[0][2])]/>
此解决方案不起作用,但经过一些调试后,我发现Odoo
将所选的ID存储在_store
属性中。如果要排除所选
搜索列表中的合作伙伴使用此域。
domain = [('id', 'not in' , field_one._store), ('id', 'not in', field_two._store)]
这在Odoo 11中对我来说很好,希望它对您有用。