星輝Odoo模塊開發教程5-導入、導出以及模塊數據第一講

模塊繼承之修改視圖和數據總結

大多數 Odoo 模塊的定義,如用戶界面和安全規則,實際是存儲在對應數據表中的數據記錄。
模塊中的 XML 和 CSV 文件不是 Odoo 應用運行時使用,而是載入數據表的手段。正是因爲這個原因, Odoo 模塊的一個重要部分是在文件中放入數據以在插件安裝時將其載入數據庫。
模塊可以包含初始數據和演示數據,可通過數據文件將它們加入模塊。此外,瞭解 Odoo 數據的格式對於在項目實施上下文中導入導出業務數據也非常重要。
本文的主要內容有:
⚫ 理解外部標識符的概念
⚫ 導入導出數據文件
⚫ 使用 CSV 文件
⚫ 添加模塊數據
⚫ 使用 XML 數據文件

開發準備

本文要求讀者可以運行 Odoo 服務並已安裝前面我們此前開發的圖書應用。相關代碼請見
GitHub 倉庫。你可能也同時安裝了第四章模塊繼承中創建的 library_member 模塊,但本文並不要求使用該模型。

理解外部標識符的概念

外部標識符,也稱爲 XML ID,是用於唯一標識 Odoo 中特定記錄的有可讀性的字符串標識符。在 Odoo 中加載數據時它們就很重要了,這樣可以對已有數據記錄進行修改或在其它數據記錄中引用它。
首先我們將討論外部標識符的工作原理以及如何對其進行檢查。然後我們會學習如何使用網頁客戶端來查找指定數據記錄的外部標識符,在創建插件模塊或繼承已有模塊時需要經常用到。

外部標識符的工作原理

記錄在數據庫中的真實標識符是自動分配的序列號,在安裝模塊時沒法預先知道將要分配的具體ID 的。外部標識符讓我們無需知道真實的數據庫 ID 便可以引用一條相關記錄。 XML ID 爲數據庫ID 提供了一個方便的別名,藉於此我們可以在任何時刻引用某一指定記錄。
Odoo 模塊數據文件中使用 XML ID 來定義記錄。其中一個原因是避免在升級模塊時創建重複的記錄,在升級時會再次將數據文件加載到數據庫中。我們要檢測已有記錄來進行更新,而不是重複創建記錄。另一個原因是使用 XML ID 來支持交叉數據:即需引用其它數據記錄的數據記錄。因
爲我們無法知道真實數據庫 ID,使用 XML ID 來由 Odoo 框架來進行相應的轉換。Odoo 處理由外部標識符向所分配的真實數據庫 ID 的轉換。背後的機制相當簡單: Odoo 維護一張外部標識符和對應數據庫 ID 的映射表: ir.model.data model。
我們需啓用開發者模式才能訪問下文中的菜單。可通過在右上角頭像左側查看是否有調試圖標,如果沒有需在 Settings 菜單頁啓用,具體方法可參照第一章使用開發者模式快速入門 Odoo 12中的內容。
通過菜單訪問 Settings > Technical > Sequences & Identifiers > External Identifiers 可查看已有映射。例如訪問外部標識符列表並過濾出 library_app 模塊,將可以看到該模塊生成的外部標識符.
可以看到外部標識符有 Complete ID 標籤。注意其組成部分爲:模塊名+.+標識符名,如library_app.action_library_book。外部標識符僅需在 Odoo 模塊內唯一,兩個模塊中使用相同標識符不會產生衝突。全局唯一標識符是由模塊名和外部標識符共同組成的,在上圖 Complete ID 項中可以看到。在數據文件中使用外部標識符,我們可以選擇完整的標識符或僅外部標識符部分。通常僅使用外
部標識符會更簡單,但使用完整標識符時我們可以引用其它模塊中的數據記錄。做引用時不要忘記在模塊依賴中加入這些模塊以確保在我們的記錄之前加載這些記錄。
“ 小貼士: 有時即便引用相同模塊中的 XML ID 也需使用完整標識符”在上圖列表最上方可以看到library_app.action_library_book 完整標識符。這是我們在模塊中創建的菜單操作,在相應的菜單項中引用。點擊進入表單視圖查看詳情。圖中可以看出library_app 模塊中的 action_library_book 外部標識符映射到 ir.actions.act_window 模型中的記
錄 ID,此處爲 80:除了作爲其它應用引用記錄的一種方式外,外部標識符還可以避免重複導入帶來的重複數據。一
旦外部標識符已存在,則會在原有記錄上更新,避免了重複數據的新建。

查找外部標識符

在爲我們的模塊寫入數據記錄時,經常需要查找已有外部標識符來作引用。一種方式是訪問菜單
Settings > Technical > Sequences & Identifiers > External Identifiers,前面已經演示過。另一種方法是使用開發者菜單。在第一章 使用開發者模式快速入門 Odoo 12 中介紹瞭如何激開發者模式。
要查找一個數據記錄的外部標識符,我們應打開對應的表單視圖,在開發者菜單中選擇 ViewMetadata 選項。此時會顯示一個帶有記錄數據庫 ID 和外部標識符(也稱作 XML ID)的對話框。比如要查看 demo 用戶 ID,需通過 Settings > Users & Companies > Users 進入用戶表單視圖,然後點擊開發者工具菜單中的 View Metadata 選項。此時可以看到 XML ID 是base.user_demo,數據庫 ID 是 6:查看錶單、列表、搜索或 action 視圖中的外部標識符,都可以使用開發者菜單。下面我們通過Edit View 選項來打開相應視圖的詳情表單。此時可以查看到 External ID 字段,其值即爲外部標識符。例如在下圖中,可以看到圖書表單視圖的 External ID 爲 library_app.view_form_book

更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/odoo12-teach/

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