CSV数据可以通过API发送到OpenERP/Odoo吗?

Jas*_*son 6 xml-rpc openerp odoo

我可以通过管理页面将逗号分隔值(CSV)数据导入大多数模型.此过程处理外部ID,以便可以在以后的CSV导入中添加或修改数据.这是一种琐碎的行为.

通过API,可以创建和修改相同的记录,并可以设置外部ID.但是,这需要在使用API​​推送数据的外部应用程序中手动编码CSV导入器处理的许多逻辑.通过API推送数据可以实现自动化.

是否有一种方法可以使用API​​(因此不需要对Odoo中的代码进行任何更改)来推送CSV数据(因此插入/更新/关系/外部ID等的逻辑由Odoo处理)?这将是一种混合方法,我试图避免在Odoo中创建导入模块的需要.

编辑:"外部ID"通常称为"XML ID".我认为这是一个与早期版本的OpenERP相悖的术语,而不是与XML有关的任何内容.

编辑

此页面描述了一个load()函数,该函数通过管道将类似CSV的数据推送到系统中:

http://openerp-server.readthedocs.org/en/latest/06_misc_import.html

如果可能的话,我无法看到如何将该页面上的摘要转换为通过API的操作.我猜我需要接口(入口点),模型,方法(load()可能)和一些其他参数,但细节超出了我的范围.

Jas*_*son 4

答案是“是”。

load()方法可用于任何模型来加载数据。此方法采用与 CSV 文件提供的结构相同的数据。

  • 第一个参数是字段名称数组,例如 CSV 导入中的列标题。
  • 第二个参数是记录数组。每条记录都是与每个字段匹配的值的数组。

API 将返回由 OpenERP 处理的错误列表。然而,许多错误只会导致 OpenERP 上的数据库异常,因此需要将其作为 API 故障进行处理。这主要是因为 OpenERP API 并不是作为通用 API 设计的,而是作为 GUI 的一部分,因此发送到 API 的数据在很大程度上与通过 GUI 的应用程序的当前状态相关。换句话说,无效数据很少能找到使用 OpenERP GUI 的 API。

我已将加载器功能、捕获错误和异常封装在我的 PHP OpenERP API 库中:

https://github.com/academe/openerpapi/blob/master/src/App/Loader.php

希望这对其他人也有用。