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的提交操作。
通过检查代码的其他部分解决了问题。
当我在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的提交操作。
通过检查代码的其他部分解决了问题。