В моей папке класса a есть много товаров и много сумм. Мне нужно использовать фильтр домена в моем поле good_id из суммы класса, в этом поле мне нужно показать список товаров моей папки.Openerp динамический фильтр домена
поэтому я создаю функцию в классе суммы (_get_folder_list_goods), которая возвращает список товаров в папке, и я добавляю атрибут домена в поле good_id из суммы класса.
вот мои классы:
class folder(osv.osv):
_name = 'folder'
_columns = {
'name' : fields.char(u'Numéro',size=50, readonly=True),
'goods_ids': fields.many2many('good', 'doss_bien_rel', 'folder_id', 'good_id', 'Goods'),
'amount_id': fields.one2many('amount', 'folder_id', 'Amounts'),
....}
class good(osv.osv):
_name = 'good'
_columns = {
'name' : fields.function(_name_get_fnc, type="char", string=u''),
....}
class amount(osv.osv):
_name = 'amount'
def _get_folder_list_biens(self, cr, uid,folder_id, context={}):
liste_goods=[]
object_folder = self.pool.get('folder').browse(cr,uid,folder_id,context)
if object_folder.goods_ids:
for good in object_folder.goods_ids:
liste_goods.append(good.id)
return liste_goods
_columns = {
'folder_id': fields.many2one('folder', 'Ref folder', select=True),
'good_id':fields.many2one('good', Goos',domain="[('id', 'in', _get_folder_list_biens(folder_id))]"),
}
Я получил эту ошибку:
Uncaught Error: NameError: name '_get_folder_list_biens' is not defined
Благодарим Adrian.i, создав функциональное поле, как вы предлагаете, и сделайте мой домен. он работает только для существующих линий, это означает, что, когда я создаю новую строку суммы, домен пуст, потому что он еще не вводит функцию (до того, как я сохраню функцию поля пуст), но как только я сохраню, она имеет значение и когда я редактирую свой домен, отлично работает. Моя проблема теперь в том, как установить домен с самого начала. – nadia