odoo 中 |= 是什么意思
-
这是集合操作符号:
SetA |= SetB
等同于SetA = SetA | SetB
即:集合的或操作
Odoo中的RecordSet也是集合的概念,所以可以使用集合操作符
-
都是recordSet, recordSet的子集也是recordSet
-
东莞-neter(627785244) 10:10:22
odoo新api中强调的是recordset,
什么时候,什么操作如果遵循他的规范都会得到一个recordset,
只不过这个recordset可能包含一个,或者几个记录,对于有一个记录的可以直接进行属性操作。
但本质上还是个recordset。所以很绕,一般初次接触的会很容易给搞蒙。
Rs = env['xxxx'],是个recordset,只不过为空。
rs = Rs.browse(xxxx),是个recordset。
rs[0],是个recordset, rs.browse('xxxxx')此时rs也可以像Rs一样browse,
如果此时你用java的类可以new实例,但是实例不能new实例,
这就是odoo和java思想的区别。问题的核心在于_browse函数。读懂了就全懂了。 -
recordSet并不是列表,而是一个对象,这个对象具有
集合(set)
的属性。
简单理解recordSet是列表是不对的。 -
Iterating on a recordset will yield new sets of a single record ("singletons"), much like iterating on a Python string yields strings of a single characters.
这是odoo文档的原话,她说:“遍历recordset集合得到的是(单记录的set)子集合(还是集合);这非常像 当遍历一个字符串时,每次得到一个(单字符的串)”。所以不管是‘’单字符‘’字符串还是子集合,依然拥有字符串或集合的所有特性。
回到你的例子,“ for move in self ”: 遍历了self(recordset集合),move每次得到的是单记录的子集合set,而self也是集合(set),自然而然两个能进行 |=