Odoo 13中如何通过XML-RPC批量更新多条记录字段?
Odoo 13 XML-RPC批量更新记录报错解决
你的问题出在write方法的参数嵌套错误:你把记录ID列表额外套了一层列表,不符合Odoo API的参数要求。
错误代码问题点
原代码中,write方法的第一个参数被写成了[records_to_update](嵌套列表),但Odoo的write方法要求第一个参数是直接的记录ID列表,不需要额外嵌套。
正确代码
将代码修改为:
models.execute_kw(db, uid, pw, 'table.name', 'write', [records_to_update, {'field': value}])
原因说明
Odoo XML-RPC的execute_kw方法最后一个参数是目标方法(这里是write)的参数列表:
write方法的第一个参数必须是记录ID的一维列表,用于指定要更新的记录- 第二个参数是字段值字典,所有指定记录的对应字段会被设置为字典中的值
你之前的嵌套写法会让Odoo把整个ID列表当成单个无效的记录ID处理,进而触发内部逻辑报错(就是你看到的message_values = dict((message_id, {}) for message_id in self.ids)相关错误)。
验证
修改后即可实现文档描述的批量更新功能:所有records_to_update中的记录会被统一设置为指定字段值。
内容的提问来源于stack exchange,提问作者Neill
相关产品推荐
相关产品推荐

