星輝Odoo模塊開發教程6-導入導出 CSV 數據文件第二講

導入數據

首先應確認開啓了導入功能,默認是開啓的。如果沒有,進入 Settings > General Settings,在 Users 版塊下勾選 Import & Export 選項即可。啓用該選項後,列表視圖上方 Create 按鈕旁就會顯示一個 Import 按鈕。
“ 注意: Import & Export 設置安裝 base_import 模塊,該模塊用於提供這一功能。 ”下面我們嘗試批量編輯 Contact 或 Partner 數據。使用電子表單或文本編輯器打開 CSV 並修改幾個值。將 id 欄留空即可新增行。前文已經提到第一列 id 作爲每行的唯一標識符,這讓已有記錄可以被更新,而不會因重新導入數據重複創建。我們在導出表中編輯任意字段在導入時對應記錄就會被更新。
對於要加入 CSV 文件的新行,我們可以自己添加外部標識符或將 id 列留空。兩種方式都會創建新的記錄。作爲示例,我們添加一行 id 留空、 name 爲 Phillip K. Dick,來在數據庫中新建這一記錄。在 CSV 文件中進行保存,點擊 Import(Create 按鈕旁),然後點擊 Load File 按鈕選擇磁盤中 CSV 的路徑就出會出現如下導入助手。點擊右上角的 Test Import 按鈕,檢查數據正確性。由於導入的文件是在 Odoo 中導出文件基
礎上修改的,正常會有效並且各列會自動與數據庫中對應字段匹配。因編輯所使用的軟件各異,有可能需對分隔符和編碼進行處理。現在可以點擊 Import 按鈕,修改和新建記錄就會被載入到Odoo 中。

CSV 數據文件中的關聯記錄

前面的示例非常簡單,一旦我們開使用關聯多張表的關聯字段時,數據文件就會變得更爲複雜。我們處理過圖書中的 Partner 記錄,下面就看一下如何在圖書 CSV 文件中表示對這些 Partner
的引用。具體來說,有一個出版商(publisher_id 字段)的 many-to-one(或外鍵)關聯,以及一個作者(author_ids 字段)的 many-to-many 關聯。
CSV 文件的表頭行中關聯列應在名稱後添加一個/id。它將使用外部標識符來引用關聯記錄。本例中,我們將在 publisher_id/id 字段中加載圖書出版商,使用關聯 Partner 的外部 ID 作爲其值。
“ 注意: 可使用/.id 來進行替代來使用數據庫中的真實 ID(自動分配的數字 id),但極少使用到。除非有特別原因,否則請使用外部 ID 而非數據庫 ID。同時要記住數據庫 ID 針對具體的數
據庫,所以如果導入到非原始數據庫中這種操作大多數情況下都會失敗。 ”CSV 數據文件中也可導入 many-to-many 字段,這和添加帶雙引號並由逗號分隔的外部 ID 列表一樣簡單。例如,要載入圖書作者,將需要一個 author_ids/id 列,並使用一個關聯 Partner 外部 ID 的逗號分隔列表作爲其值:
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://www.erpdaxue.cn/odoo/odoo-teach/odoo12-teach/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章