奥杜鬼影

时间:2018-12-10 14:31:08

标签: python odoo odoo-8

当我在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是否具有类似的体验

1 个答案:

答案 0 :(得分:0)

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

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

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