使用xmlrpc
连接到服务器并按照here的说明操作后,我尝试更改route_ids
的值(采购 - >供应链信息 - >路线)因此,未选择三个选项(制造,购买,按订单生产)。
首先我采用当前值:
>>> models.execute_kw(db, uid, password,
... 'product.template', 'read',
... [125], {'fields': ['route_ids']})
{'route_ids': [5, 6, 1], 'id': 125}
然后我尝试更新值:
>>> models.execute_kw(db, uid, password, 'product.template', 'write',
... [[125], {'route_ids': []}])
True
最后,我检查值是否已更新:
>>> models.execute_kw(db, uid, password,
... 'product.template', 'read',
... [125], {'fields': ['route_ids']})
{'route_ids': [5, 6, 1], 'id': 125}
知道为什么这不起作用?当我尝试更改display_name
时,我得到了相同的结果,即没有变化,但是当我尝试更改weight_net
时,一切正常。有什么想法吗?
答案 0 :(得分:1)
如果您查看了有关write方法here的文档,您就会明白为什么它不起作用。 实际上,您提供的页面确实引用了there。
所以我认为您遇到的问题是您正在尝试清空route_ids,并为其分配一个空列表。
文档说明:
One2many和Many2many使用特殊的“命令”格式来操纵存储在该字段中/与该字段相关联的记录集。
此格式是按顺序执行的三元组列表,其中每个三元组是在记录集上执行的命令。并非所有命令都适用于所有情况。
我们有兴趣删除记录:
(5,_,_)
从集合中删除所有记录,相当于在每条记录上明确使用命令3。不能在One2many上使用。不能在create()中使用。
所以我认为你应该写一下:
>>> models.execute_kw(db, uid, password, 'product.template',
'write', [[125], {'route_ids': [[5, 0, 0]]}])
True
希望它有所帮助。