场景描述:测试
更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname] KeyError: 'entry_id'spa
没有其余信息了,一头雾水,由于最近修改代码文件比较多,代码中用到字段“entry_id”的地方不少,一下不知是哪块的问题。。。日志
以下图:code
从输出的异常日志能够看出,是模型依赖的问题。因而开始网上查询相似案例,找到以下一则:blog
https://www.odoo.com/zh_CN/forum/help-1/ip
跟本身状况对比后,发现仍是有区别的!!!!开发
哎,怎么整,笨办法,备份当前代码,回到到两天前修改的代码状态。get
添加代码,按照本地提交记录,一步步测试!幸运的是,添加了第一次提交的代码运行后,重启服务,出现了相同的异常!string
这样,处理范围缩小了,检查模型代码,原来_rec_name值写错了,写成了_rec_name = 'entry_id',而该模型下并无相应字段entry_id,因此服务启动加载代码编译的时候,出现了上述错误。io
以下举例:这里_rec_name应该写成TEST模型中存在的字段:cop_msg_id, 即:_rec_name = 'cop_msg_id'
class TEST(models.Model): """ 出错的模型 """ _name = 'test.test888' _description = 'test888' _rec_name = 'entry_id' cop_msg_id = fields.Char(string="******") name = fields.Char(string="******", size=18)
反思总结:
1. 及时提交代码测试,养成完成一个功能模块就提交测试的习惯。
2. 细心,在相似功能开发,为了省力,复制代码的时候,尤为注意。