Фильтр в openerp

Как отфильтровать поле «много2одно» в openerp.

_columns = {
   'hello': fields.selection([('1','one'),('2','two')],'hello'),
   'product_id': fields.many2one('product.product',
                                 'Product',
                                 domain=[('type','=',hello)])'
   ...
}

Если предположить, что product.product имеет поле с именем type, которое также является выбором, и его значение такое же, как и hello, работает ли оно в xml или python??


person goblin2986    schedule 01.03.2011    source источник
comment
Ваш вопрос может потребовать более подробной информации. Расскажите нам, что именно вы пытаетесь сделать. Данные примера действительно помогают прояснить вопрос.   -  person Don Kirkby    schedule 01.03.2011
comment
@shahjapan ''привет:fields.selection([('1','один'),('2','два')],'привет'), 'product_id': fields.many2one('product.product' , 'Product', domain=[('type','=',hello)])' если предположить, что product.product имеет поле с именем type, которое также является выбором, и его значение такое же, как и hello, работает ли оно в xml или python??   -  person goblin2986    schedule 03.03.2011
comment
Вы должны отредактировать свой вопрос, а не отвечать комментарием   -  person Loïc Faure-Lacroix    schedule 13.02.2015


Ответы (4)


вы можете попробовать атрибут domain fields.many2one, как показано ниже

'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True),

альтернативный способ -> вы можете указать домен в своем XML-представлении, как показано ниже,

<field name="product_id" domain="[('purchase_ok','=',True)]"/>

person shahjapan    schedule 02.03.2011
comment
''привет:fields.selection([('1','один'),('2','два')],'привет'), 'product_id': fields.many2one('product.product', ' Product', domain=[('type','=',hello)])' если предположить, что product.product имеет поле с именем type, которое также является выбором, и его значение такое же, как и hello, работает ли оно в xml или python?? - person goblin2986; 03.03.2011
comment
Я думаю, вы хотите изменить домен product_id (M2O) на основе другого поля hello, если это так, вам нужно написать атрибут on_change в поле hello в вашем xml, а в python написать соответствующую функцию onchange_hello должна возвращать соответствующий domain для поля product_id, для подробного пример см. существующий модуль покупка -› способ product_id_change - person shahjapan; 03.03.2011

Вам нужно указать домен в файле представления, в котором вы хотите отфильтровать поле «многие к одному». Например, если вы хотите отфильтровать поставщиков из списка клиентов, просто укажите следующее в представлении.

:domain="[('supplier','=',True)]"
person Pravitha V    schedule 19.04.2012

Попробуйте параметры context или domain, описанные в книге для разработчиков. Я не использовал их, но вы, вероятно, можете найти примеры в основных модулях. Лучшее описание синтаксиса domain находится на orm.search() метод.

person Don Kirkby    schedule 01.03.2011

Я думаю, вы хотите правильно отфильтровать product.product в соответствии с полями приветствия. поэтому напишите метод onchange для приветствия, поданного в xml, и в методе отфильтруйте идентификатор продукта, тип которого соответствует значению приветствия.

В функции/методе вы можете добавить все идентификаторы, тип которых соответствует значению приветствия, в список и после вернуть этот список в product_id.

person Anup    schedule 28.07.2012
comment
как это написать, когда фильтр домена содержит более 2 условий? - person Priyan RockZ; 29.04.2013
comment
да, это будет работать для одного и более чем одного условия, потому что мы генерируем список идентификаторов, которые удовлетворяют всем условиям, которые мы хотим, и этот список вернется... - person Anup; 05.06.2013