odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

原生的odoo在导入导出时,会有很多不方便,特别是处理 m2o多对一, o2m一对多,  m2m多对多字段时会很麻烦,遇到名称重复就更不好处理了。

根据诸多项目的经验,我们做了导入导出的增强模块,对上述做了极大的增强,可以对上述关系字段,通过各种唯一编码进行导入导出。支持所有模型,支持所有唯一编码字段。支持增量更新,即数据存在则更新,没有则新建。完全满足了项目上线时一般数据初始化的工作。

应用已上架,官方市场下载:app_base_import_export

对于 o2m即form中的明细导入的支持: app_web_supero2m

 

以下进行操作举例,主要步骤如下:

  1. 通过导出功能生成模板,注意必填字段要包含,一般我们已经为必填字段设置了默认值,所以可以当报错时才处理
  2. 简单修改模板,一般是增加 "/关键字段", 如 "/ref", "/code", "/default_code",或 "/编码", "/参考"等,用字段名,或者字段标签即可。注意,为提高效率,只对索引字段进行处理,故在对象模型中,请确保关键字段 index=True
  3. m2m关系使用 "code1,code2"这样的 逗号 "," 分离
  4. 用生成的 excel文件导入,查看效果。
  5. 在详情表单 form中也可以直接这样处理,使用我们增强的 o2m一对多导入导出功能即可,注意只会导入此详情的数据。
  6. 注意事项,为保证数据准确,"/"成为了保留字,所以在name等关键字段或者定义中最好不要使用 "/",可以使用"|"代替。  另外为了方便m2o关系对应,实际的 "名称"最好不要重复。

 

比如我们实际业务中,一个尺码会属于多个尺码组,我们希望在尺码库中导入大量数据类似以下:

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

 

具体操作如下:

1. 通过导出功能生成模板

选中样例记录,导出。

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

如果想更新记录,那么勾选 “我想更新数据”,这时会将唯一"外部ID"字段导出,便于找到对应记录更新。

注意,有黑体下划线的是必填字段。可以“勾选新模板”将常用的导入方式加个命名,然后保存,供后续快速使用。

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

点击导出,即可导出一个命名为模型名的 excel文件。

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

 

2. 简单修改模板

我们可以直接改这个模板进行数据导入,只需要删除"外部ID"字段,就可以进行新增。

但这种对最用户来说并不友好,不符合每行一记录的操作习惯,也不能适用于相同名称的情况。 所以我们修改如下。

  • 如果要更新数据,那么保留这个"外部ID"字段。我们现在是新增,所以要删除"外部ID"字段。
  • 处理码制,作为m2o样例,改为 "码制|标准/关键唯一编码字段名,在此例中,是 "ref",一般odoo里会有"code"等这样的字段,在产品中,odoo会是 "default_code"字段,我们就用 "/default_code"即可。这个在开发者模式下很容易查看确定。
  • 本例中,欧码对应是 "EU"

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

 

3.m2m关系使用 "code1,code2"这样的 逗号 "," 分离

处理尺码组,2行(或n行)改1行,每行中尺码组用 ","分隔,注意一定是半角符号 ","。 男鞋尺码组39-45对应 X003,女鞋尺码组35-40 对应 X004。

使用Excel的功能,我们快速来做3个尺码,对应的excel文件如下:

 

 

为符合国内习惯,也可以用中文,用关键字字段的中文描述,即将 ref换为编码,如下:

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

4. 用生成的 excel文件导入,查看效果。

选择导入的excel,操作导入

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

回到尺码库,我们可以看到数据导入完成。

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

至此操作结束,是不是很方便!

 

5. 处理最常见的一对多类型导入

在详情表单 form中也可以直接这样处理,使用我们增强的 o2m一对多导入导出功能即可,注意只会导入此详情的数据。

操作基本类似

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

 

6.按关键值采用更新模式的导入

采用按第一列是唯一索引更新导入的模式,在导入文件中,第一列填入唯一编码,系统会自动按编码去搜索更需要更新的数据。系统中存在这个编码则更新编码下的所有字段。

odoo16,15,14,13的高级导入导出处理,按唯一编码导入导出,m2m字段导入导出

 

7. 注意事项

为保证数据准确,"/"成为了保留字,所以在字段定义中不要使用 "/",可以使用"|"代替。  另外为了方便m2o关系对应,实际的 "名称"最好不要重复。

odoo微信小程序发布指引,直接生成odoo管理小程序