Odoo.sh中继承模块添加Char字段触发500服务器错误求助
Odoo.sh 中为 res.partner 添加 Char 字段触发 500 错误的排查与解决
明确问题:在 Odoo.sh 的 staging 分支构建时,给 res.partner 继承类添加 compid2 Char 字段触发 500 内部服务器错误,注释掉字段定义后恢复正常;XML 视图无问题,其他类型字段(Many2Many、Integer)均可正常添加,此前也成功实现过字段继承,但当前场景下无法使用命令行排查,需要适配 Odoo.sh 的解决方案。
用户提供的代码格式合规:
Python 代码
from odoo import models, fields class ResPartner(models.Model): _inherit = 'res.partner' compid2 = fields.Char(string='Company ID')
XML 代码
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="res_partner_form_view_inherit" model="ir.ui.view"> <field name="name">res.partner.form.view.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <field name="vat" position="after"> <field name="compid2"/> </field> </field> </record> </odoo>
针对 Odoo.sh 环境的排查解决步骤:
- 排查字段命名冲突:开启 Odoo 后台开发者模式,进入
res.partner模型的字段列表,确认是否已有第三方模块或历史字段使用了compid2名称,若存在重名需修改字段名。 - 查看构建日志详情:登录 Odoo.sh 项目后台,进入对应 staging 分支的「Logs」页面,查找构建过程中的具体错误日志(500 错误仅为表层提示,日志中会包含数据库迁移、字段约束等具体报错信息)。
- 检查旧数据库字段兼容性:若旧数据库中曾存在
compid2字段但类型与当前定义不符(比如之前是 Integer 类型),会导致迁移失败。可通过开发者模式查看res.partner字段的历史记录,确认字段类型是否冲突。 - 确认模块依赖顺序:检查模块的
__manifest__.py文件,确保depends列表中包含base模块,避免因模块加载顺序异常导致字段无法正确初始化。 - 隔离测试验证:创建测试分支,仅保留
compid2字段的代码,移除其他新增字段,重新构建验证是否为该字段单独引发的问题,排除代码耦合干扰。 - 重新触发数据库迁移:在 Odoo.sh 分支的「Actions」菜单中选择「Rebuild」,或在备份数据后选择「Reset Database」,强制重新执行数据库迁移操作,解决可能存在的迁移缓存问题。
内容的提问来源于stack exchange,提问作者Harebrained
相关产品推荐
相关产品推荐

