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

Odoo 17 如何基于自定义字段条件隐藏父视图中的Tax ID字段

Odoo 17 如何基于自定义字段条件隐藏父视图中的Tax ID字段

嗨,我来帮你搞定这个需求!你已经成功给res.partner模型扩展了is_farmer布尔字段,接下来只需要在视图继承中针对Tax ID对应的字段添加条件隐藏规则就可以了。

首先确认你的模型扩展代码是没问题的(可以稍微完善下,加上字段描述更清晰):

from odoo import models, fields

class ResPartner(models.Model):
    _inherit = 'res.partner'
    is_farmer = fields.Boolean(string="Is Farmer", help="标记该合作伙伴是否为农户")

接下来就是关键的视图修改部分,你提到的position="attributes"语法完全正确,我们只需要定位到Tax ID对应的vat字段(Odoo里Tax ID默认绑定的是vat字段),然后给它添加attrs属性来实现条件隐藏:

<record id="view_res_partner_form_inherit" model="ir.ui.view">
    <field name="name">res.partner.form.inherit</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <!-- 定位到Tax ID对应的vat字段,修改它的属性 -->
        <field name="vat" position="attributes">
            <!-- 设置条件:当is_farmer为True时,隐藏该字段 -->
            <attribute name="attrs">{'invisible': [('is_farmer', '=', True)]}</attribute>
        </field>
    </field>
</record>

简单解释下这段代码:

  • 我们通过position="attributes"来修改原有vat字段的属性
  • attrs里的invisible规则定义了隐藏条件:当is_farmer字段的值为True时,Tax ID字段就会自动隐藏
  • 如果你需要反过来(当is_farmer为False时隐藏),只需要把条件改成('is_farmer', '=', False)就行

最后别忘了升级你的自定义模块,这样修改才会生效哦!

备注:内容来源于stack exchange,提问作者MarkNS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:18:07