1

当我写我的问题时,我很困惑,我觉得这对一些读者来说是一个模糊的问题。所以我再次重写了这个问题以明确?

我使用 Java 学习了面向对象的编程。我对 python 中的self的了解在 Java 中就像这样,两者代表类本身的实例 - 一个实例。例如:self.name、self.age 等...

所以这里的问题是,Odoo 框架开发人员如何让self 代表类的多个实例并使用传统的普通 python 类定义迭代 self

for i in self

答案是无法使用正常的 python 定义来实现的,他们使用元类来实现,如本问题答案中的 URL 中所述

4

2 回答 2

1

很抱歉发布我的答案迟到了,我发现我失踪了

迭代类实例 (self) 01
迭代类实例 (self) 02
迭代类实例 (self) 03

于 2017-01-01T10:12:22.647 回答
0

在新的 api 中,当您使用装饰器时,@.multi odoo 将调用向自身传递一组 id 的函数,例如,如果您在树视图中检查记录并在更多菜单中选择删除,odoo 将打包所选记录并调用方法只传递一次并传递记录集中的所有记录,因此 self 是一个列表,您应该始终使用循环。但是如果你使用 @api.one 装饰器 self 将只包含一条记录,你不能在这里循环 self 。因此,如果您在树视图中选择多条记录并为选定的 10 条记录执行一些操作,adoo 每次使用一条记录都会调用此函数 10 次,就像他循环抛出选定的记录并调用不推荐的函数一样。对于计算字段,装饰器是@api.depends,它的行为类似于@api。这里的 multi self 是一个记录集,因此请始终使用循环,否则如果您没有专门使用树视图,则会出现错误。我必须以艰难的方式学习这一点,在包含 mellion 记录的模型中使用 @api.depends 和 @api.one 的相同方法我使用 print 来查看控制台上的工作 odoo 称为函数百万次 soi 永远不会如果我确定,请使用 api.one onkply

于 2016-12-08T09:54:44.940 回答