当我在Odoo中进行模型搜索时,我随机遇到数据库中不存在的额外记录。例如:
假设此搜索语句仅返回一条记录
mytable = self.env["my.table"]
mydata = mytable.search([('something_uid', '=', 1)]) #this should only return one
但是当我检查mydata.id
时会出现单例错误,因为结果不是一个。还有一条额外的记录,当我再次检查它在表中不存在时。
是因为我的代码中存在错误吗?我在很多场合都发现了这一点。但是我不能指出问题出在哪里。
更新
我将代码上传到pastebin.com,请看看 https://pastebin.com/gk0rDfuy
PS。我使用的是Odoo 8,但我想知道更高版本的Odoo是否具有类似的体验
答案 0 :(得分:0)
似乎Odoo的ORM对其数据库操作使用一种事务。这解释了为什么当我在代码中放置一个断点时查询数据库时,我找不到代码指向的记录。
仅当代码完成时,数据库才会提交记录。这也解释了为什么即使我从断点退出也不会提交记录。从断点退出不会触发Odoo的提交操作。
通过检查代码的其他部分可以解决此问题。