Per ORM 文档 https://www.odoo.com/documentation/12.0/reference/orm.html#openerp-models-relationals-format,使用左运算符1
应该用作:
(1、id、值)
并且有效地
更新 id 的现有记录id
与值中的值。
在您的代码中,您正在使用(1, 0, values)
它正在尝试更新记录id == 0
,这是不可能存在的。
就其价值而言,我很少看到左运算符用作1
。通常,我使用4
更新记录值,这将添加new_customer
to the record
's customer_ids
field:
record.customers_ids = [(4, 0, new_customers[0])]
然而,使用4
一次只支持添加一条记录(这就是我使用的原因new_customers[0]
在上面的例子中。如果您想一次添加多个,可以使用列表理解:
record.customers_ids = [(4, 0, new_customer) for new_customer in new_customers]
为了完整起见,这里是文档中的片段,其中包含每个可能的左运算符的用途和语法。作为参考,我几乎只用过3
, 4
, or 6
.
(0、_、值)
添加根据提供的值字典创建的新记录。
(1、id、值)
更新 id 的现有记录id
中的值values
。不能用于create()
.
(2, ID, _)
删除id的记录id
从集合中删除它(从数据库中)。不能用于create()
.
(3,id,_)
从集合中移除id为id的记录,但不删除它。不能用于One2many
。不能用于create()
.
(4,id,_)
添加 id 的现有记录id
到集合。不能用于One2many
.
(5、_、_)
从集合中删除所有记录,相当于使用命令3
明确地在每条记录上。不能用于One2many
。不能用于create()
.
(6、_、id)
将集合中的所有现有记录替换为ids
列表,等价物
使用命令5
随后是一个命令4
对于每个id
in ids
.