具有自身包含NewObjectId作为记录的

时间:2019-03-16 12:48:41

标签: python odoo odoo-11

据我所知,使用装饰器@onchange和@depends执行方法时,几乎两个参数中的'self'总是一个具有以下格式的记录集:

res.partner(1、2、3)(例如,在本例中为res.partner模型)

什么代表将应用修饰方法的记录。

在ORM无法恢复数据库中的id的情况下,这是因为它是尚未记录的元素。

这是我从有关Odoo理论的书中学到的,并且到目前为止对我都有效。

两个星期前,在更新了第三方模块之后,我开始注意到在我自己的模块中,self参数总是返回我(例如):

res.partner(odoo.models.NewId对象位于0x7f8c0f604768,)

因此,使用这些装饰器的每种方法。

对我来说,这表明它不会恢复数据库中的ID,只会在内存中返回其地址。

我尝试了很多事情,删除所有自己的模块并重新克隆它们,或者创建一个新的数据库,仅安装自己的模块,或者创建一个只有Odoo模块的新基础,并使用由scaffold命令,或者删除IDE并重新安装它,直到在另一台计算机上的实例中进行测试并安装我自己的模块为止。但是我总是得到相同的结果。

在这两周之前,我自己的模块中的方法正确使用了self。而且唯一的更新是对第三方模块的访问。

另一个有趣的事情是,第三方模块和Odoo模块都确实会恢复自变量中的记录集(根据理论),但不是针对我自己的模块(甚至不是针对所构建的基本模块)使用scaffold命令)。

我的问题是: -为什么变量self以这种方式使用记录? -如果存在此错误,我该如何纠正?

非常感谢!! :)

1 个答案:

答案 0 :(得分:0)

现在对我来说onchange方法很好。但是在某些方法中,我了解到自变量始终具有一个记录集。图像显示了一个简单的模块,该模块使用scaffold命令创建并使用Pycharm中的调试系统。我只是在使用@depends装饰器的方法中停下来,这就是结果。

Pycharm environment

server backend