2016-07-12 4 views
2

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

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

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

Пример:

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

Однако, если изменить код так:

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

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

ответ

1

Динамическая область с переменным правыми части должна быть применена в коде Python, так что я был просто сократить свой домен к определению поля Many2many в Python:

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