如何通过JSON-RPC API获取Odoo项目任务关联的工作表详情?
获取Odoo项目任务关联工作表的用户填写内容(JSON-RPC方式)
用户填写的工作表实际内容存储在worksheet.template.line模型中,每条记录对应工作表里的一个填写项,关联到具体的任务和工作表模板。project.task模型通过worksheet_lines字段与该模型形成一对多关联,这是获取数据的核心入口。
1. JSON-RPC调用示例(execute_kw)
你可以通过调用project.task的execute_kw方法,指定拉取worksheet_lines关联字段,并读取worksheet.template.line中的关键字段来获取原始数据:
步骤1:获取指定任务的工作表填写记录ID
{ "jsonrpc": "2.0", "method": "call", "params": { "model": "project.task", "method": "execute_kw", "args": [ [123], // 替换为目标任务ID "read", [["worksheet_lines"]] ], "id": 1 } }
返回结果中worksheet_lines会包含该任务下所有工作表填写记录的ID列表。
步骤2:读取工作表填写记录的实际内容
用上面得到的ID列表,调用worksheet.template.line的read方法,指定需要的字段:
{ "jsonrpc": "2.0", "method": "call", "params": { "model": "worksheet.template.line", "method": "execute_kw", "args": [ [456, 789], // 替换为步骤1得到的记录ID "read", [["value", "template_line_id", "task_id"]] ], "id": 2 } }
value:用户填写的实际内容(根据字段类型可能是字符串、数字或JSON格式)template_line_id:关联的工作表模板行,可进一步读取该记录的name字段获取填写项的标签名称task_id:关联的任务ID,用于验证数据归属
2. 关于任务仪表盘按钮与Webhook触发
在任务仪表盘添加按钮并触发Webhook的实现思路:
- 在
project.task的视图XML中添加按钮,绑定一个自定义Python方法 - 该Python方法内部查询当前任务的
worksheet_lines数据,组装成你需要的格式 - 调用自有服务的Webhook接口,将组装好的工作表数据发送过去
补充说明
你之前接触的html_field_history是Odoo前端用于渲染工作表历史记录的字段,仅存储渲染结构,并非原始填写数据的存储位置。原始数据全部在worksheet.template.line的value字段中。
内容的提问来源于stack exchange,提问作者Jimi
相关产品推荐
相关产品推荐

