如何在many2one上过滤数据/字段?

时间:2015-07-24 07:32:07

标签: xml filter openerp-7 many-to-one

是否有人可以帮助解决此问题:未捕获TypeError:undefined不是函数?这是我做的:

我制作了一个可以销售,销售和帐户的模块。在课程 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,以便唯一显示的是那些没有产品__产品可用的产品&#39;。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您的域名过滤器是在xml视图文件中定义的错误方法

我们应该以下面的方式设置产品字段的过滤器

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

听到我展示你的上述问题,我已经弄清楚了一些事情 你完全以错误的方式实现代码。 没有别的,你只是让代码更复杂。

1.无需为生成产品ID创建新功能,生成产品ID并提供可用的产品。

2.无需创建单独的字段即可添加到xml视图文件中。

3.在视图xml文件中对产品添加域过滤器是错误的定义方式

我希望我的回答对您有所帮助:)。