ODOO 12环境下隐藏Many2many字段(taxes_id)无效问题求助
解决Odoo 12中隐藏product.template的taxes_id字段失效问题
我在Odoo开发中也踩过类似的坑,针对你在Python 3.6 + Odoo 12环境下隐藏taxes_id(Many2many类型)字段失效的问题,给你几个排查和解决的方向:
1. 确认继承的父视图是否正确
你当前继承的是product.product_template_only_form_view,这个视图通常是用于快速创建产品的简化表单,而常规的产品详情表单用的是product.product_template_form_view。如果你的业务场景是打开完整产品表单,那继承错视图肯定不会生效。
验证方法:
- 开启开发者模式,打开产品表单页面
- 点击右上角的「编辑视图:表单」,查看页面顶部的视图ID,确认你要继承的是哪个视图
2. 调整XPath定位方式
Many2many字段可能被嵌套在group或page容器中,直接定位字段可能找不到元素。可以试试这两种更可靠的方式:
方式一:直接隐藏字段(推荐)
Odoo支持用position="hide"快捷隐藏元素,比修改invisible属性更直接:
<record model="ir.ui.view" id="view_form_gesimmo"> <field name="name">Product Template Gesimmo Form</field> <field name="model">product.template</field> <!-- 替换成你实际要继承的视图ID --> <field name="inherit_id" ref="product.product_template_form_view"/> <field name="arch" type="xml"> <xpath expr="//field[@name='taxes_id']" position="hide"/> </field> </record>
方式二:精确定位到字段所在容器
如果方式一还是失效,先找到字段所在的group,再定位字段:
<record model="ir.ui.view" id="view_form_gesimmo"> <field name="name">Product Template Gesimmo Form</field> <field name="model">product.template</field> <field name="inherit_id" ref="product.product_template_form_view"/> <field name="arch" type="xml"> <!-- 定位到包含taxes_id的group,再设置隐藏 --> <xpath expr="//group[@name='taxes']/field[@name='taxes_id']" position="attributes"> <attribute name="invisible">1</attribute> </xpath> </field> </record>
3. 检查模块加载顺序和缓存
- 确保你的模块在
__manifest__.py的depends列表中包含product,这样Odoo会先加载原生产品模块,再加载你的定制模块:'depends': ['base', 'product'], - 修改XML后,必须升级你的模块,并且在开发者模式下点击「刷新视图」按钮,清除视图缓存,确保新的配置生效。
4. 排查是否有其他模块冲突
如果以上方法都无效,可能是其他定制模块也修改了taxes_id字段,覆盖了你的配置。可以在「设置 > 技术 > 视图」中搜索product.template的表单视图,查看继承层次,确认你的视图是最后被应用的。
内容的提问来源于stack exchange,提问作者Hello_world
相关产品推荐
相关产品推荐

