odoo中对X2many的操作
many2many
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | (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
1 2 3 | (0, 0,{ values })根据values里面的信息新建一个记录。 (1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据) (2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系) |
在 to-many 关联字段上设置值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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方法,删除数据以及整个主从数据链接关系) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)