Odoo 14企业版自定义模块继承res.users添字段报错求助
问题排查与解决:Odoo 14 继承
res.users后字段未在数据库生成 核心报错psycopg2.ProgrammingError: column res_users.custom_field does not exist说明自定义字段未成功写入数据库,结合Docker部署环境,按以下步骤排查:
1. 确认模块更新命令是否正确执行
Docker环境下,必须针对目标数据库执行模块更新命令,确保触发数据库迁移:
docker exec -it <你的Odoo容器名> odoo -d <目标数据库名> -u <你的自定义模块名> --stop-after-init
- 替换
<你的Odoo容器名>、<目标数据库名>、<你的自定义模块名>为实际值 - 查看容器日志,搜索是否有类似
ALTER TABLE res_users ADD COLUMN custom_field VARCHAR;的SQL执行记录,若无则说明迁移未触发
2. 检查模块Manifest文件配置
确保__manifest__.py配置正确:
- 依赖声明必须包含
base:'depends': ['base'](res.users属于base模块) - XML视图文件需加入
data列表:'data': ['views/你的视图文件名.xml'] - 确认
'installable': True,未设置'auto_install': True(除非是自动安装模块)
3. 验证模型文件的导入逻辑
- 自定义模型文件需放在模块的
models目录下 - 模块根目录的
__init__.py需导入models目录:from . import models models目录下的__init__.py需导入你的模型文件:from . import custom_user
(若未正确导入,Odoo不会加载模型类,自然不会创建字段)
4. 排查Docker容器数据库权限
进入容器,手动执行字段创建SQL,验证权限:
# 进入Odoo容器 docker exec -it <你的Odoo容器名> bash # 连接PostgreSQL数据库(假设数据库用户为odoo) psql -h <数据库主机> -U odoo -d <目标数据库名> # 执行字段创建命令 ALTER TABLE res_users ADD COLUMN custom_field VARCHAR;
若执行报错权限不足,需调整容器运行用户或数据库权限设置
5. 强制重置模块迁移状态
若上述步骤无效,尝试卸载后重新安装模块:
# 卸载模块 docker exec -it <你的Odoo容器名> odoo -d <目标数据库名> -u <你的自定义模块名> --uninstall --stop-after-init # 重新安装模块 docker exec -it <你的Odoo容器名> odoo -d <目标数据库名> -i <你的自定义模块名> --stop-after-init
内容的提问来源于stack exchange,提问作者Muhammad Awais
相关产品推荐
相关产品推荐

