Odoo中无法隐藏/修改合并字段campaign_id的问题求助
问题原因及解决办法
可能的原因
- 视图定位不精确:标准
crm.crm_lead_view_form视图中,campaign_id字段嵌套在特定分组容器内,直接使用//field[@name='campaign_id']可能匹配到多个节点,导致修改未作用到目标字段。 - 继承优先级冲突:若其他模块的视图继承在你的视图之后加载,会覆盖你对
campaign_id的显示设置。 - 字段渲染的潜在逻辑:虽然
campaign_id是普通关联字段,但部分Odoo版本中,原视图可能通过分组容器的属性间接控制其显示状态。
解决办法
1. 精确定位目标字段
通过Odoo debug模式打开表单视图的Edit View: Form,找到campaign_id所在的父容器(标准CRM表单中,它位于名为marketing的分组内),使用更具体的XPath表达式修改:
<xpath expr="//group[@name='marketing']/field[@name='campaign_id']" position="attributes"> <attribute name="invisible">True</attribute> </xpath>
2. 强制替换字段定义
若修改属性无效,直接替换整个字段节点来设置隐藏:
<xpath expr="//field[@name='campaign_id']" position="replace"> <field name="campaign_id" invisible="1"/> </xpath>
3. 提升视图继承优先级
在你的视图记录中添加priority字段,确保你的修改覆盖其他模块的设置(数值越高优先级越高):
<record id="crm_lead_view_form" model="ir.ui.view"> <field name="name">crm.lead.inherit.view.form</field> <field name="model">crm.lead</field> <field name="inherit_id" ref="crm.crm_lead_view_form"/> <field name="priority" eval="20"/> <!-- 高于默认优先级0 --> <field name="arch" type="xml"> <!-- 你的修改代码 --> </field> </record>
4. 追加字段到campaign_id后方
如果需要在campaign_id之后添加自定义字段,使用position="after"的XPath:
<xpath expr="//field[@name='campaign_id']" position="after"> <field name="your_custom_field"/> <!-- 替换为实际字段名 --> </xpath>
内容的提问来源于stack exchange,提问作者eXe
相关产品推荐
相关产品推荐

