继承crm.crm_case_form_view_oppor时遭遇Odoo ParseError问题
Odoo CRM视图继承触发ParseError问题解决
问题原因
你在继承视图的arch字段里写了完整的<form>结构,这违反了Odoo视图继承的规则。继承视图的arch只能包含修改指令(比如xpath定位、字段的position属性),不能重新定义整个表单框架。当保留inherit_id时,Odoo会把这个视图当作继承视图解析,完整的form结构不符合继承语法,所以抛出ParseError;移除inherit_id后,它变成独立视图,完整form结构合法,因此正常运行。
正确写法示例
如果要对原商机表单做局部修改(比如添加字段、调整现有元素),参考以下写法:
<odoo> <data> <record id="view_custom_crm_lead_form" model="ir.ui.view"> <field name="name">custom.crm.lead.form</field> <field name="model">crm.lead</field> <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> <field name="arch" type="xml"> <!-- 示例1:在原视图的基本信息组内添加自定义字段 --> <xpath expr="//group[@name='lead_info']" position="inside"> <field name="your_custom_field"/> </xpath> <!-- 示例2:修改原名称字段的显示文本 --> <field name="name" position="attributes"> <attribute name="string">自定义商机标题</attribute> </field> </field> </record> </data> </odoo>
核心注意点
- 继承视图的
arch中不能出现顶层<form>标签,必须基于原视图结构做局部修改 - 用
xpath定位元素时,可通过Odoo开发者模式查看原视图的XML结构,确保路径准确 - 常用position属性:
inside(内部插入)、after(元素后插入)、replace(替换元素)、attributes(修改元素属性)
内容的提问来源于stack exchange,提问作者adel bouakaz
相关产品推荐
相关产品推荐

