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

Odoo 10 QWeb视图元素隐藏报错:is_customer字段不存在

解决Odoo 10中QWeb视图attrs引用is_customer字段报错的问题

这个报错的核心原因很明确:is_customer并不是res.partner模型的原生基础字段,它是由sale模块添加的计算字段。你的自定义模块没有正确依赖sale模块,导致视图渲染时找不到这个字段。

下面是具体的解决步骤:

1. 添加模块依赖

在你的自定义模块的__openerp__.py(Odoo 10中模块描述文件采用该命名)里,把sale模块加入到depends列表中,确保模块加载时sale模块已经完成初始化,is_customer字段被正确创建:

{
    'name': '你的自定义模块名称',
    'version': '1.0',
    'depends': ['base', 'sale'],  # 新增sale模块依赖
    'data': [
        # 填写你的视图文件路径
    ],
    # 其他模块配置项...
}

2. 优化视图代码(可选)

你的视图逻辑本身没问题,可以稍微调整下attrs的写法(移除多余的尾逗号),让代码更规范:

<record id="extended_res_partner" model="ir.ui.view">
    <field name="name">Extended View</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="model">res.partner</field>
    <field name="arch" type="xml">
            <notebook position="inside">
                <page string="Foo" name="foo" attrs="{'invisible': [('is_customer', '=', False)]}">
                    <field name="is_customer" invisible="1"/>
                    <span>Foo2</span>
                </page>
            </notebook>
    </field>
</record>

额外方案:自定义字段(不依赖sale模块)

如果你不想依赖sale模块,也可以自行在res.partner模型上定义is_customer字段,比如添加一个布尔字段:

from openerp import models, fields

class ResPartner(models.Model):
    _inherit = 'res.partner'
    
    is_customer = fields.Boolean(string="Is Customer")

不过这种方式会覆盖sale模块的原生计算字段逻辑,建议根据你的实际业务需求选择。

内容的提问来源于stack exchange,提问作者M.E.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:12:14