我有一个模型,用户可以在其中选择狗的品种(dog_breed
,选择字段)。然后,在同一个模型中,我有一个Many2many字段(dogs
),用户可以在其中添加狗。但是我希望当用户添加一只狗时,他只能选择那些品种是Selection
字段中选择的狗。
<field name="dog_breed"/>
<field name="dogs" domain="[('breed', '=', dog_breed)]"/>
当您向Many2many添加元素时,首先会看到可用记录的列表,如果您要查找的记录已存在,则选择其中一个记录。我需要的是将域应用于该列表。
示例:
用户在选择字段
dog_breed
中选择 foxterrier 。现在 他在Many2manydogs
中添加了一个元素。包含所有内容的列表 可用的狗将被打开,但我想显示所有的列表 可用 foxterriers 。为此,我编写了上面的代码,但确实如此 根本不工作。
但是,如果我以这种方式修改代码:
<field name="dog_breed"/>
<field name="dogs" domain="[('breed', '=', 'foxterrier')]"/>
它完美无缺。是否可以从XML代码管理它?
答案 0 :(得分:1)
必须在Python代码中应用动态域,在这种情况下甚至不需要使用 onchanges 来返回所需的域,我只需要将域名剪切为定义Python中的Many2many
字段:
dogs = fields.Many2many(
comodel_name='dog',
relation='mss_dog_rel',
column1='mss_id',
column2='dog_id',
string='Dogs',
domain="[('breed', '=', dog_breed)]",
)