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. 细心,在类似功能开发,为了省力,复制代码的时候,尤其注意。

原文地址:https://www.cnblogs.com/hellojesson/p/11377474.html