将动态域应用于 Odoo8 中的 many2many 字段的最佳方法?

Best way to apply dynamic domain to many2many field in Odoo8?

我有一个模型,用户可以在其中 select 狗的品种(dog_breed,一个选择字段)。然后,在同一模型中,我有一个 Many2many 字段 (dogs),用户可以在其中添加狗。但我希望当用户添加一只狗时,他只能 select 在 Selection 字段中 select 品种的狗中。

<field name="dog_breed"/>
<field name="dogs" domain="[('breed', '=', dog_breed)]"/>

当您将元素添加到 Many2many 时,首先您会看到可用记录的列表,如果您要查找的记录已经存在,则 select 其中之一。我需要的是将域应用于该列表。

Example:

An user selects foxterrier in the Selection field dog_breed. Now he adds an element in the Many2many dogs. A list with all the available dogs will be opened, but I want to show a list with all the available foxterriers. To do that, I wrote the above code, but it is not working at all.

但是,如果我这样修改代码:

<field name="dog_breed"/>
<field name="dogs" domain="[('breed', '=', 'foxterrier')]"/>

效果很好。是否可以通过 XML 代码进行管理?

动态域必须在Python代码中应用,在这种情况下甚至不需要使用onchanges到return所需的域,我只需将我的域剪切到 Python:

Many2many 字段的定义
dogs = fields.Many2many(
    comodel_name='dog',
    relation='mss_dog_rel',
    column1='mss_id',
    column2='dog_id',
    string='Dogs',
    domain="[('breed', '=', dog_breed)]",
)