odoo开发笔记 -- 异常处理in resolve_deps field = model
场景描述:
更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname] KeyError: 'entry_id'
没有其他信息了,一头雾水,因为最近修改代码文件比较多,代码中用到字段“entry_id”的地方很多,一下不知是哪块的问题。。。
如下图:
从输出的异常日志可以看出,是模型依赖的问题。于是开始网上查询类似案例,找到如下一则:
https://www.odoo.com/zh_CN/forum/help-1/
跟自己情况对比后,发现还是有区别的!!!!
哎,怎么整,笨办法,备份当前代码,回到到两天前修改的代码状态。
添加代码,按照本地提交记录,一步步测试!幸运的是,添加了第一次提交的代码运行后,重启服务,出现了相同的异常!
这样,处理范围缩小了,检查模型代码,原来_rec_name值写错了,写成了_rec_name = 'entry_id',而该模型下并没有相应字段entry_id,所以服务启动加载代码编译的时候,出现了上述错误。
如下举例:这里_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. 细心,在类似功能开发,为了省力,复制代码的时候,尤其注意。