Odoo 12:如何根据相关字段添加域?

时间:2019-08-14 08:24:03

标签: odoo odoo-12

我有两个many2many相关字段,我们称它们为field_onefield_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_onefield_two中已经存在的伙伴不应该在field_three的scrooling列表中。

我该怎么做?非常感谢。<< / p>

我使用了api.onchange("field_one", "field_two"),但是它不起作用。

PS:这里是"project.task"模式。

2 个答案:

答案 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中对我来说很好,希望它对您有用。