odoo 中的 self 如何使用普通传统 python class 定义表示多个 class 实例并使用 for i in self 迭代它们

How self in odoo represent more than one class instance using normal traditional python class definition and iterate over them using for i in self

我写问题的时候一头雾水,我觉得这对一些读者来说是一个模糊的问题。 所以我再次重写了问题以便清楚?

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

所以这里的问题是,如何 Odoo 框架开发人员使 self 代表 class 的多个实例 并且使用传统法线pythonclass定义?

迭代自身
for i in self

答案是无法使用正常的 python 定义来实现,他们使用 meta-class 来实现,如 中所述此问题的答案 中的网址。

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

抱歉迟到才发布我的答案,我找到了我的遗漏

Iterate over class instances (self) 01
Iterate over class instances (self) 02
Iterate over class instances (self) 03