如何通过Web API更新Odoo/OpenERP8中的product.template`中的route_ids`的值?
How to update the values of `route_ids` through Web API in the `product.template` in Odoo/OpenERP 8?
使用 xmlrpc
连接到服务器并按照 here 的说明进行操作后,我尝试更改 route_ids
的值(采购 -> 供应Chain Information -> Routes) 所以三个选项中的 none (Manufacture, Buy, Make To Order) 被选中。
首先我取当前值:
>>> 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
时,我得到了相同的结果,即没有变化,一切正常。有什么想法吗?
如果您查看有关写入方法的文档 here,您就会明白为什么它不起作用。
实际上,您提供的页面确实明确引用了它,there.
所以我认为您遇到的问题是您试图清空 route_ids,并为其分配一个空列表。
文档指出:
One2many and Many2many use a special “commands” format to manipulate the set of records stored in/associated with the field.
This format is a list of triplets executed sequentially, where each triplet is a command to execute on the set of records. Not all commands apply in all situations.
我们感兴趣的删除记录:
(5, _, _)
removes all records from the set, equivalent to using the command 3 on every record explicitly. Can not be used on One2many. Can not be used in create().
所以我认为你应该改为:
>>> models.execute_kw(db, uid, password, 'product.template',
'write', [[125], {'route_ids': [[5, 0, 0]]}])
True
希望对您有所帮助。
使用 xmlrpc
连接到服务器并按照 here 的说明进行操作后,我尝试更改 route_ids
的值(采购 -> 供应Chain Information -> Routes) 所以三个选项中的 none (Manufacture, Buy, Make To Order) 被选中。
首先我取当前值:
>>> 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
时,我得到了相同的结果,即没有变化,一切正常。有什么想法吗?
如果您查看有关写入方法的文档 here,您就会明白为什么它不起作用。 实际上,您提供的页面确实明确引用了它,there.
所以我认为您遇到的问题是您试图清空 route_ids,并为其分配一个空列表。
文档指出:
One2many and Many2many use a special “commands” format to manipulate the set of records stored in/associated with the field.
This format is a list of triplets executed sequentially, where each triplet is a command to execute on the set of records. Not all commands apply in all situations.
我们感兴趣的删除记录:
(5, _, _)
removes all records from the set, equivalent to using the command 3 on every record explicitly. Can not be used on One2many. Can not be used in create().
所以我认为你应该改为:
>>> models.execute_kw(db, uid, password, 'product.template',
'write', [[125], {'route_ids': [[5, 0, 0]]}])
True
希望对您有所帮助。