場景描述:測試
更新代碼,重啓服務服務後,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. 細心,在相似功能開發,爲了省力,複製代碼的時候,尤爲注意。