2015-07-24 2 views
0

Может ли кто-нибудь помочь решить эту проблему: Uncaught TypeError: undefined не является функцией? Вот что я сделал:Как фильтровать базу данных/поля на many2one?

Я создал модуль, который в продаже, crm и счет. На классе crm_lead я добавить некоторые изменения:

def _get_available_product(self, cr, uid, ids, name, arg, context=None): 
    vals = {} 
    pr_id = [] 
    for rec in self.browse(cr, uid, ids, context=context): 
     id = rec.id 
     product_list = self.pool.get('product.product').search(cr,uid,[('product_state','=','available')]) 
     pr_id = [product.id if product.id else False for product in self.pool.get('product.product').browse(cr,uid,product_list,context=context)] 
     vals[id] = {'product_ids':pr_id} 
    return vals 

def _defaults_product(self, cr, uid, ids, context=None): 
    product_list = self.pool.get('product.product').search(cr,uid,[('product_state','=','available')])   
    pr_id = [product.id if product.id else False for product in self.pool.get('product.product').browse(cr,uid,product_list,context=context)] 
    value = {"value":{'product_ids':pr_id}} 
    _logger.info("\n\n\t\t\tVALUE %s"%(str(value))) 
    return value 

_columns = { 
'product_id' : fields.many2one('product.product','Product'), 
'product_ids' : fields.function(_get_available_product, type='many2many', relation='product.product', method=True, store=False, multi='compute_available_product', string='Available Product'), 
} 

_defaults = { 
     'product_ids' : _defaults_product, 
} 

На crm_lead_view.xml

<group> 
    <field name="product_ids" nolabel="1" widget="many2many" invisible="1" 
</group> 
<group> 
    <group> 
     <field name="product_id" required="1" domain="[('id','in',product_ids[0][2])]"/> 
    .... 

и когда я пытаюсь создать Свинец, ошибка клиента всплывал так же, как выше. Моя цель на самом деле заключается в том, что, если я создаю вывод, я хочу отфильтровать product_id так, чтобы показанные только те продукты w/c product_state были «доступны».

Любая помощь очень ценится.

ответ

0

ваш домен фильтр неправильно определить в файле представления XML

Просто мы должны установить фильтр поля продукта ниже в пути

<group> 
    <group> 
     <field name="product_id" required="1" domain="[('product_state','=','available')]"/> 
</group> 
</group> 

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

1.Не нужно создать новую функцию, предназначенную для генерации идентификатора продукта, которые генерируются и предоставляют продукт, который доступен.

2.Не нужно создать отдельное поле для добавления в файл вида xml.

3.Added домен фильтр на продукте в виде XML-файле является неправильным способом определить

Я надеюсь, что мой ответ может полезно для вас :)

+0

Проблемы этого случаем является то, что «product_state» не определяет в классе 'crm.lead', а определяется классом product.product. –

+0

Да, определенно product_state является частью продукта, но не частью crm.lead, так что в этом случае мы должны установить состояние продукта, которое вы должны добавить в наш объект продукта –

Смежные вопросы