Odoo幽灵记录

Odoo ghost record

当我在Odoo中进行模型搜索时,我随机遇到数据库中不存在的额外记录。例如:

假设这条搜索语句只有returns条记录

mytable = self.env["my.table"]
mydata = mytable.search([('something_uid', '=', 1)]) #this should only return one

但是当我检查 mydata.id 时,我得到单例错误,因为结果不是一个。有一个额外的记录,当我仔细检查它不存在于 table.

是不是我的代码有bug?我在很多场合都发现了这一点。但是我不能指出哪里有问题。

Update

I uploaded the code to pastebin.com please have a look https://pastebin.com/gk0rDfuy

PS。我正在使用 Odoo 8 但我很好奇 Odoo 的更高版本是否有类似的体验

Odoo 的 ORM 似乎在其数据库操作中使用了一种事务。这就解释了为什么当我在代码中放置断点时查询数据库时,我找不到代码指向的记录。

只有当代码完成时,数据库才会提交记录。这也解释了为什么即使我从断点退出它也不会提交记录。因为从断点退出不会触发Odoo的提交操作。

通过检查代码的其他部分解决了问题。