Odoo 12:如何根据相关领域添加域名?

Odoo 12 : how to add domain depending on related field?

我有两个 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")

当用户想要在 field_three 中添加合作伙伴 (res.partner) 时,那些已经在 field_onefield_two 中的合作伙伴应该不在 field_three.

的滚动列表中

我该如何继续这样做?非常感谢。<

我用了api.onchange("field_one", "field_two")但是没用

PS : 我们这里是 "project.task" 模型。

您好,请创建 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)

使用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 中工作得很好希望它对你有用。