Odoo 8中为sale_order_line创建产品搜索筛选器报错,求正确写法
正确写法说明
根据你的使用场景,分两种情况给出正确写法:
场景1:在销售订单(sale.order)搜索视图中,筛选包含指定产品的订单
如果是要找出包含某个产品的销售订单,有两种匹配方式:
- 精准匹配产品:
<field name="product_id" string="Sales" filter_domain="[('line_ids.product_id', '=', self)]"/>
- 模糊匹配产品名称:
如果想通过产品名称关键词做模糊搜索,需要关联产品的name字段:
<field name="product_id" string="Sales" filter_domain="[('line_ids.product_id.name', 'ilike', self)]"/>
场景2:在销售订单行(sale.order.line)搜索视图中,筛选订单行的产品
如果是直接在订单行的搜索视图里筛选产品,无需额外配置filter_domain,直接使用字段本身即可:
<field name="product_id" string="Product"/>
原代码的问题点:
- 字段名写
line_ids.product_id属于冗余写法,对应视图中直接用product_id即可,Odoo会自动处理关联逻辑。 ilike是字符串匹配运算符,不能直接用于product_id这个many2one类型字段,若要模糊搜索需指向产品的name字段。- 原
filter_domain的域逻辑不符合Odoo筛选规则,无法正确关联筛选条件。
内容的提问来源于stack exchange,提问作者Nur Faiz
相关产品推荐
相关产品推荐

