python - 在没有新模块的情况下向 OpenERP 中的合作伙伴添加外部 ID

标签 python xml-rpc openerp

我的问题有点复杂,我是 OpenERP 的新手。

我有一个外部数据库和一个 OpenERP。外部的不是 PostgreSQL。 我的工作是我需要同步两个数据库中的伙伴。 外在的更重要。这意味着如果外部数据发生变化,OpenERp 的数据也会发生变化,但如果 OpenERP 的数据发生变化,则外部数据不会发生任何变化。

  • 我可以访问外部数据库,使用 XML RCP 我可以访问 对 OpenERP 也是如此。

  • 我可以简单地使用 XML RCP 从外部数据库导入数据,但是 问题是同步。

  • 我不能只插入修改过的搭档并删除旧的搭档
    因为我无法识别旧的。

  • 我需要更新它。但是然后我需要一个 id 来说明哪个是哪个。 和外部 ID。

  • 据我所知,OpenERP 可以处理外部 ID。

这是如何运作的?以及如何使用它向我的 res.partner 添加外部 ID?

有人告诉我,我不能单独为此创建一个新模块,我需要使用内部 ID 作品。

最佳答案

简短回答:查看 CSV 导入和导出向导的工作方式 - 导出记录会自动创建一个外部标识符,因此您可以重新导入相同的标识符CSV 和记录将被更新而不是重新创建。

长答案:
OpenERP 将外部 ID 存储在 ir.model.data 表中,您可以通过设置菜单在用户界面中访问该表 1 。这个简单的表将 module_name.record_identifier 形式的“外部标识符”映射到指向实际表和行的一对 (model,res_id)

这些外部 ID 用于查找与某些外部源创建的记录相对应的数据库本地行:模块(因此是基于 module 的命名空间)或导入的 CSV 文件,通常.

例如,外部标识符 base.EUR 映射到数据库中保存欧元货币的数据库记录,并由 base 模块拥有。

从 6.1 版开始,OpenERP 自动为所有使用边栏导出向导导出的 OpenERP 记录创建新的外部标识符:它们被导出到名为 CSV 列中id.

如果这样的 id 列存在于通过导入向导导入的 CSV 文件中,OpenERP 还将创建一个外部标识符来记住它。当外部标识符已经存在时,将更新而不是创建记录。

理论上,您所要做的就是生成一个带有额外 id 列的正确 CSV 文件 2 来自您的主数据库(您甚至可以使用实际的数据库 ID),并将其导入 OpenERP。然后,您应该可以随时重新导入此 CSV 文件的更新版本。

引用资料:

  • 导入导出 向导基本上调用 API 方法 export_dataimport_data ,因此您可以根据需要通过 XML-RPC 编写脚本。
  • ir.model.data模型存储外部标识符(过去称为 XML ID,因为它对应于模块数据文件中 XML 记录的 id 字段)。

1 在 OpenERP 6.1 中,它位于设置>配置>序列和标识符>外部标识符下,而在 OpenERP 版本 7 中,它位于设置>技术>序列和标识符>外部标识符.

2 可以是任何不带点“.”字符的字符串:它将存储在一个特殊的 __export__ 模块命名空间中)

关于python - 在没有新模块的情况下向 OpenERP 中的合作伙伴添加外部 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356218/

相关文章:

c# - 多语言 RPC 库

css - OpenERP( View ) - 随着标签和字段之间的空间变化?

python - Odoo 8 从向导打开 TreeView

xml - OpenERP,用 XML 播种 Many2Many 关系?

python - 在正则表达式模式中获取捕获组的起始位置

python - 为什么 ndimage.label(image) 在考虑的形状中标记额外的形状?

java - 在 google app engine for java 中使用 xml rpc 客户端 - 超时时间为 30 秒? - 如何使用低级 API 进行访问

iphone - Cocoa XML-RPC 框架 XMLRPCConnection 方法

python pandas将数据框展平为列表

python - 如何在Python2.7的unittest中显示assertRaises()捕获的错误信息?