将动态域应用于 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)]",
)
我有一个模型,用户可以在其中 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 Many2manydogs
. 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)]",
)