You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo中如何在产品变体列表页添加产品模板自定义字段搜索

问题排查与解决方案:Odoo产品变体搜索表单添加型号字段报错

错误原因

报错提示“Domain on non-relational field makes no sense”,核心问题是你在视图的普通字符字段(model_number_search)上设置了domain属性,这不符合Odoo的规则:

  • domain属性仅适用于关联字段(如many2one/many2many),用来限制可选值范围;
  • 你已经通过related字段把模板的model_number关联到了产品变体,完全不需要额外加domain来筛选。

修复方案(两种可选)

方案一:简化现有代码(推荐)

保留关联字段,移除视图中多余的domain属性:

模型代码(无需修改)

class ProductProduct(models.Model):
    _inherit = 'product.product'

    model_number_search = fields.Char(related='product_tmpl_id.model_number',
                                      string='Model Number', readonly=True, store=True)

视图代码(移除domain)

<record id="res_product_product_tree_new" model="ir.ui.view">
    <field name="name">product.product_search_form_view</field>
    <field name="model">product.product</field>
    <field name="inherit_id" ref="product.product_search_form_view"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='name']" position="after">
           <field name="model_number_search" string="Model Number"/>
        </xpath>
    </field>
</record>

方案二:无需新增关联字段,直接关联模板字段搜索

如果不想在product.product模型新增字段,可以直接在搜索视图中使用关联路径:

视图代码(无需修改模型)

<record id="res_product_product_tree_new" model="ir.ui.view">
    <field name="name">product.product_search_form_view</field>
    <field name="model">product.product</field>
    <field name="inherit_id" ref="product.product_search_form_view"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='name']" position="after">
           <field name="product_tmpl_id.model_number" string="Model Number"/>
        </xpath>
    </field>
</record>

说明

  • 方案一的store=True会把字段值存在数据库,搜索性能更好;
  • 方案二更轻量化,无需额外数据库字段,适合简单场景。

内容的提问来源于stack exchange,提问作者ahmed mohamady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:27:17