You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:42:58