many2many
(0,_ ,({'field': value}) 创建一个新的记录并将其链接到这个记录
(1,id,({'field': value}) 更新已链接的记录上的值
(2,id,_) 取消链接并删除相关记录
(3,id,_) 取消链接,但不删除相关记录
(4,id,_) 链接一个已经存在的记录
(5,_,_) 取消链接,但不会删除所有链接的记录
(6,_,[ids]) 用提供的列表替换链接记录的列表
Py中
# 设置 many2many字段为 [8, 5, 6, 4]
self.write({
'users':[(6, 0, [8, 5, 6, 4])]
})
# 取消所有链接
self.floor_ids = [(5, 0, 0)]
XML中
# 设置用户
<field name="users" eval="[(6,0,[ref('base.user_root')])]"/>
# 代码中的定义
var x2ManyCommands = {
// (0, virtualID, {values})
CREATE: 0,
create: function (virtualID, values) {
delete values.id;
return [x2ManyCommands.CREATE, virtualID || false, values];
},
// (1, id, {values})
UPDATE: 1,
update: function (id, values) {
delete values.id;
return [x2ManyCommands.UPDATE, id, values];
},
// (2, id[, _])
DELETE: 2,
delete: function (id) {
return [x2ManyCommands.DELETE, id, false];
},
// (3, id[, _]) removes relation, but not linked record itself
FORGET: 3,
forget: function (id) {
return [x2ManyCommands.FORGET, id, false];
},
// (4, id[, _])
LINK_TO: 4,
link_to: function (id) {
return [x2ManyCommands.LINK_TO, id, false];
},
// (5[, _[, _]])
DELETE_ALL: 5,
delete_all: function () {
return [5, false, false];
},
// (6, _, ids) replaces all linked records with provided ids
REPLACE_WITH: 6,
replace_with: function (ids) {
return [6, false, ids];
}
};
前面列表中使用的下划线符号代表无关的值,通常填充为0或False
one2many
(0, 0,{ values })根据values里面的信息新建一个记录。
(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
在 to-many 关联字段上设置值
many2many
(0,0,{values}) 根据values里面的信息新建一个记录。
(1,ID,{values})更新id=ID的记录(写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
(3,ID) 切断主从数据的链接关系但是不删除这个数据
(4,ID) 为id=ID的数据添加主从链接关系。
(5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)
(6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))
one2many
(0, 0,{ values })根据values里面的信息新建一个记录。
(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)