ODOO12图书项目导入导出CSV数据文件

导出数据文件并查看文件结构的简易方式是使用内置的导出功能。通过生成 CSV 文件,我们可以了解手动导入系统所需的格式,或编辑该文件批量导入,甚至是使用它生成我们插件模块的演示数据。
下面我们一起来学习从 Odoo 用户界面导入和导出的基础知识。
导出数据
数据导出是表单视图中的标准功能。要使用该功能, 需要勾选左侧的复选框来选择需导出的行,然后在上方的动作菜单中点击导出选项。首先我们要在图书应用中添加一些带有出版商和作者的图书。下例中我使用此前添加的书籍。
我们还需要安装联系人应用,这样可以看到 Partner 的列表视图,可从该处导出记录。注意其默认视图为带有名片的看板视图,需要先切换为列表视图:
在这里插入图片描述
可通过勾选列头的筛选框来选择所有匹配当前搜索条件的记录。
点击导出选项进入导出数据对话表单,可选择导出方式。我们比较关注的是导出方式可以让我们通过手动或插件模块来导入该文件:
在对话表单最上方,你想要做什么?有两个选项:

  • 在电子表格中使用数据(导出所有数据)选项,这样导出数据在以后导入时格式更友好。
  • 更新数据 (导入兼容导出)

可选择CSV或Excel,我们将选择 CSV 格式来更好理解原始导出格式,在很多表单应用中都能被读取。
下一步选取要导出的列,本例中简化操作,仅选择External ID和名称。如果我们点击导出到文件按钮,就会下载带有导出数据的文件。
在这里插入图片描述
最终的 CSV 内容类似:
在这里插入图片描述

第一行中包含列名,导入时会使用它们自动匹配目录列。导出内容有两列:

  • id:为每条记录分配的外部 ID,如果不存在,会在模块名处使用__export__ 作为前缀自动生成一条新ID。
  • name: 联系人/Partner 名称

带有外部 ID 使我们可以编辑导出数据并重新导入来把修改更新到记录中。
导入数据
首先应确认开启了导入功能,默认是开启的。如果没有,进入设置> 常规设置,在用户版块下勾选导入&导出选项即可。启用该选项后,列表视图上方创建按钮旁就会显示一个导入按钮。
下面我们尝试批量编辑Contact或Partner数据。使用电子表单或文本编辑器打开CSV并修改几个值。将 id 栏留空即可新增行。前文已经提到第一列 id 作为每行的唯一标识符,这让已有记录可以被更新,而不会因重新导入数据重复创建。我们在导出表中编辑任意字段在导入时对应记录就会被更新。
对于要加入 CSV 文件的新行,我们可以自己添加外部标识符或将 id 列留空。两种方式都会创建新的记录。作为示例,我们添加一行id 留空、name 为Phillip K. Dick,来在数据库中新建这一记录。在 CSV文件中进行保存,点击导入(创建按钮旁),然后点击加载文件按钮选择磁盘中CSV 的路径就出会出现如下导入助手:
在这里插入图片描述
点击测试导入按钮,检查数据正确性。由于导入的文件是在 Odoo 中导出文件基础上修改的,正常会有效并且各列会自动与数据库中对应字段匹配。因编辑所使用的软件各异,有可能需对分隔符和编码进行处理。现在可以点击导入按钮,修改和新建记录就会被载入到 Odoo 中。
在这里插入图片描述
CSV 数据文件中的关联记录
前面的示例非常简单,一旦我们开使用关联多张表的关联字段时,数据文件就会变得更为复杂。我们处理过图书中的 Partner 记录,下面就看一下如何在图书 CSV 文件中表示对这些 Partner 的引用。具体来说,有一个出版商(publisher_id字段)的many-to-one(或外键)关联,以及一个作者(author_ids字段)的many-to-many关联。
CSV 文件的表头行中关联列应在名称后添加一个/id。它将使用外部标识符来引用关联记录。本例中,我们将在publisher_id/id字段中加载图书出版商,使用关联 Partner 的外部 ID 作为其值。
CSV 数据文件中也可导入many-to-many字段,这和添加带双引号并由逗号分隔的外部 ID 列表一样简单。例如,要载入图书作者,将需要一个author_ids/id列,并使用一个关联 Partner外部 ID 的逗号分隔列表作为其值:

id, name, author_ids/id
book_odc11, "Odoo 11 Development Cookbook","__export__.res_partner_43_f82d2ecc,__export__.res_partner_44_6be5a130"

在这里插入图片描述
One-to-many 字段通常是表头和行或父子关系,对于这类关系有特别的支持方式:对于同一条父记录可以有多个关联行。此处我们在 Partner 模型中有一个 one-to-many字段的例子:公司可带有多个联系人。如果从 Partner 模型中导出数据并包含Contacts/Name 字段,就可以看到要导入此类型数据的格式(Contacts 中选择Azure Interior:默认应为第一条,并执行前述的导出步骤):
在这里插入图片描述
在这里插入图片描述
id和 name 列为父记录的,child_ids两列为子记录的。注意第一行记录以下父记录部分留空。上表中CSV 文件形式显示为:

"id","name","child_ids/id","child_ids/name"
"base.res_partner_12","Azure Interior","base.res_partner_address_15","Brandon Freeman"
"","","base.res_partner_address_28","Colleen Diaz"
"","","base.res_partner_address_16","Nicole Ford"

可以看到id和name这两列第一行有值,后两行都为空。其中的父记录为联系人的公司信息。另两行的前缀都是child_ids/并且在三行中都有数据。这些是父公司的联系人信息。第一行包含公司和第一个联系人,其余行仅包含联系人这一子信息。
演示视频:
https://download.csdn.net/download/r_nznf/13026021
http://www.tderp.com/download/details/odoo12csv-866
http://ctdrive.tderp.com/file/13502532-467941671

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

r_nznf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值