Odoo 18自定义模块列表视图不显示问题求助
问题分析与修复方案
1. 列表视图继承的XPath语法错误
你当前的列表视图使用了<xpath expr="//field" position="before">,这个表达式会匹配所有<field>元素,并在每个字段前重复插入指定内容,直接导致视图结构损坏,Odoo无法加载这个无效的列表视图。
修复方式:
修改列表视图的XPath,定位到准确位置插入cnp字段,比如在city字段后添加:
<!-- List View --> <record id="cnp_number_view_tree" model="ir.ui.view"> <field name="name">res.partner.view.list.inherit.cnp</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_tree"/> <field name="arch" type="xml"> <xpath expr="//field[@name='city']" position="after"> <field name="cnp"/> </xpath> </field> </record>
如果需要完全自定义列表字段(不依赖默认视图),可以直接创建独立的tree视图:
<!-- 自定义列表视图 --> <record id="cnp_number_view_tree" model="ir.ui.view"> <field name="name">res.partner.view.tree.cnp</field> <field name="model">res.partner</field> <field name="arch" type="xml"> <tree string="CNP Partners"> <field name="name"/> <field name="phone"/> <field name="email"/> <field name="city"/> <field name="cnp"/> </tree> </field> </record>
2. 动作未关联自定义视图
你的action_cnp_validation没有指定具体视图ID,Odoo会默认使用模型的系统视图,导致自定义列表视图无法被调用。
修复方式:
在动作中通过view_ids明确绑定自定义的列表和表单视图:
<!-- Action --> <record id="action_cnp_validation" model="ir.actions.act_window"> <field name="name">CNP Numbers</field> <field name="res_model">res.partner</field> <field name="view_mode">list,form</field> <field name="view_ids" eval="[(5,0,0), (0,0, {'view_mode': 'list', 'view_id': ref('cnp_number_view_tree')}), (0,0, {'view_mode': 'form', 'view_id': ref('cnp_number_view_form')})]"/> </record>
3. 表单视图优化(可选)
你当前的表单视图是完全新建的,会丢失原伙伴表单的所有默认功能(如地址、关联数据等)。如果需要保留原有功能并添加CNP字段,建议改为继承默认表单视图:
<!-- 继承默认表单视图 --> <record id="cnp_number_view_form" model="ir.ui.view"> <field name="name">res.partner.view.form.inherit.cnp</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <xpath expr="//div[@name='contact']" position="inside"> <div class="form-group"> <field name="cnp" placeholder="CNP"/> </div> </xpath> </field> </record>
4. 模块更新注意事项
- 确保
__manifest__.py中正确声明XML文件:'data': [ 'cnp_list_view.xml', ], - 更新模块时选择升级(而非仅更新应用),确保所有变更被加载。
- 调试模式下,进入「设置 > 技术 > 用户界面 > 视图」,搜索
res.partner相关视图,检查自定义列表视图是否存在且状态有效。
内容的提问来源于stack exchange,提问作者Md.Muntasir Mamun
相关产品推荐
相关产品推荐

