Odoo 14启动超级用户后出现KeyError: 'training.course'求助
Odoo 14 KeyError: 'training.course' 排查与修复方案
错误背景
启动Odoo 14超级用户后触发KeyError: 'training.course',代码与参考教程完全一致但问题未解决。服务器错误栈如下:
Odoo Server Error Traceback (most recent call last): File "D:\Odoo\server\odoo\http.py", line 652, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "D:\Odoo\server\odoo\http.py", line 317, in _handle_exception raise exception.with_traceback(None) from new_cause KeyError: 'training.course'
排查与修复步骤
1. 确认模块安装状态
- 登录Odoo后台,进入【应用】模块,搜索包含
training.course模型的目标模块,确保模块处于已安装状态。 - 检查模块根目录下的
__manifest__.py(Odoo 14中也可能是__openerp__.py),确认'installable'字段设为True,且'depends'列表包含必要依赖(如base)。
2. 验证模型定义与导入
- 检查模型文件(通常为
models/training_course.py),确保_name属性严格匹配'training.course':from odoo import models, fields class TrainingCourse(models.Model): _name = 'training.course' _description = 'Training Course' # 字段定义... - 确认模块的
__init__.py文件正确导入模型模块:from . import models # 或直接导入具体文件 from .models import training_course
3. 清除缓存并重启服务
- 完全停止Odoo服务,删除模块目录及Odoo服务器目录下的
__pycache__文件夹,清除编译缓存。 - 重新启动Odoo服务,强制加载最新模块代码。
4. 检查模型权限配置
- 进入【设置】-【技术】-【权限】-【模型访问权限】,搜索
training.course:- 确保存在对应的权限记录,且超级用户所属的
Administrator组拥有读/写权限。 - 若权限记录不存在,手动创建或重新安装模块生成默认权限。
- 确保存在对应的权限记录,且超级用户所属的
5. 数据库层面验证模型注册
- 连接Odoo数据库,执行SQL查询:
SELECT * FROM ir_model WHERE model = 'training.course'; - 若查询结果为空,说明模型未被注册到数据库,需先卸载模块(备份数据后),再重新安装。
验证修复
完成上述步骤后,重新登录超级用户,尝试访问training.course相关的菜单或功能,确认错误是否消失。
内容的提问来源于stack exchange,提问作者Ali Shidqie Al Faruqi
相关产品推荐
相关产品推荐

