Лучший способ применить динамический домен к полю many2many в Odoo8?

У меня есть модель, в которой пользователь может выбрать породу собаки (dog_breed, поле выбора). Затем в той же модели у меня есть поле Many2many (dogs), в которое пользователь может добавлять собак. Но я хочу, чтобы когда пользователь добавляет собаку, он мог выбирать только среди собак, порода которых выбрана в поле Selection.

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

Когда вы добавляете элемент в Many2many, сначала вы видите список доступных записей, чтобы выбрать одну из них, если та, которую вы ищете, уже существует. Что мне нужно, так это применить домен к этому списку.

Пример:

Пользователь выбирает фокстерьер в поле выбора dog_breed. Теперь он добавляет элемент в Many2many dogs. Откроется список со всеми доступными собаками, но я хочу показать список со всеми доступными фокстерьерами. Для этого я написал приведенный выше код, но он вообще не работает.

Однако, если я изменю код таким образом:

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

Он работает идеально. Можно ли управлять этим из XML-кода?


person forvas    schedule 12.07.2016    source источник


Ответы (1)


Динамический домен должен быть применен в коде Python, в этом случае даже не нужно использовать onchanges для возврата требуемого домена, мне нужно было только сократить свой домен до определения поля Many2many в Питон:

dogs = fields.Many2many(
    comodel_name='dog',
    relation='mss_dog_rel',
    column1='mss_id',
    column2='dog_id',
    string='Dogs',
    domain="[('breed', '=', dog_breed)]",
)
person forvas    schedule 12.07.2016