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

Odoo 16.0表单视图如何根据记录值条件显示数据?

解决Odoo 16表单视图中record/name未定义的问题

问题原因

Odoo表单视图的QWeb模板默认上下文里没有record或直接的字段名变量,直接引用会导致未定义错误。正确访问当前记录的方式是通过widget.record对象。

解决方案1:使用QWeb的widget.record变量

修改t-if条件,通过widget.record访问当前记录的字段:

<record id="custom.model_view_form" model="ir.ui.view">
    <field name="name">custom.model.view.form</field>
    <field name="model">custom.model</field>
    <field name="arch" type="xml">
        <form string="Model">
            <sheet>
                <field name="name" />

                <!-- 判断记录是否存在id -->
                <t t-if="widget.record.id">
                    <h1>Hello world!</h1>
                    <button string="Test Button" name="action_test" type="object" class="oe_highlight"/>
                </t>
                
                <!-- 判断name字段等于'Anon' -->
                <t t-if="widget.record.name === 'Anon'">
                    <p>当前记录名称为Anon</p>
                </t>
            </sheet>
        </form>
    </field>
</record>

解决方案2:使用Odoo标准attrs属性(推荐简单场景)

如果只是控制元素显示/隐藏,用attrs属性结合域表达式更符合Odoo规范,无需编写QWeb逻辑:

<record id="custom.model_view_form" model="ir.ui.view">
    <field name="name">custom.model.view.form</field>
    <field name="model">custom.model</field>
    <field name="arch" type="xml">
        <form string="Model">
            <sheet>
                <field name="name" />

                <!-- 当id存在时显示按钮 -->
                <button string="Test Button" name="action_test" type="object" class="oe_highlight" 
                        attrs="{'invisible': [('id', '=', False)]}"/>
                
                <!-- 当name等于'Anon'时显示提示 -->
                <p attrs="{'invisible': [('name', '!=', 'Anon')]}">当前记录名称为Anon</p>
            </sheet>
        </form>
    </field>
</record>

两种方案对比

  • widget.record方式:适合复杂逻辑场景,比如需要动态生成HTML内容、循环渲染等。
  • attrs方式:配置简洁,是Odoo官方推荐的字段级显示控制方式,适合简单的显隐需求。

内容的提问来源于stack exchange,提问作者Jhordy Said Barrera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:22:46