Odoo15报错:res.partner模型不存在contact_prenom字段,请求排查
Odoo 15: 解决"Field 'contact_prenom' does not exist in model 'res.partner'"报错
下面是针对该报错的具体排查和解决步骤:
1. 验证Python模型的字段定义
- 确保
x.py里的模型继承和字段定义完全正确,示例代码参考:from odoo import models, fields class ResPartnerExtension(models.Model): _inherit = 'res.partner' contact_prenom = fields.Char(string='联系人名') # 字段名必须和视图引用完全一致 - 检查模块根目录的
__init__.py是否导入了该模型文件:
缺少这行代码的话,Odoo不会加载你的模型定义,字段自然无法被创建。from . import x
2. 检查视图文件的正确性
- 确认
x.xml中字段引用的拼写和Python里的contact_prenom完全匹配(大小写敏感),示例视图代码:<record id="inherit_partner_form_contact_prenom" model="ir.ui.view"> <field name="name">res.partner.form.contact.prenom.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <!-- 根据需求调整position属性,如after/before等 --> <field name="name" position="after"> <field name="contact_prenom" string="联系人名"/> </field> </field> </record> - 检查
manifest.py的data列表是否包含该视图文件:
路径需和实际文件位置匹配,否则视图无法被加载。'data': [ 'views/x.xml', ],
3. 执行正确的模块升级流程
- 先重启Odoo服务器,确保新的模型代码被加载。
- 进入Odoo后台找到你的模块,点击升级按钮。若升级过程有报错,查看Odoo日志的详细信息。
- 若升级无效,可尝试卸载模块(注意备份相关数据)后重新安装,这能清除可能残留的旧模型缓存。
4. 排查模块加载问题
- 检查模块目录名
om_是否符合Odoo模块命名规范(仅允许小写字母、数字、下划线),特殊字符可能导致模块无法被正确识别。 - 用
--log-level=debug参数启动Odoo,查看启动日志确认你的模型文件是否被成功加载,是否存在Python语法错误、导入错误等。若模型加载失败,字段不会被添加到res.partner中。
内容的提问来源于stack exchange,提问作者Zoro
相关产品推荐
相关产品推荐

