了解外部标识符

来自Odoo大V社-odoo中文开发手册
95102545讨论 | 贡献2017年4月17日 (一) 13:24的版本

跳转至: 导航搜索
外部ID(也稱為XML ID)是人類可讀的字串標識符,其唯一標示Odoo中特定的記錄。這在將數據加載到Odoo時很重要。
一個原因是當升級模組時,其資料文件將被再次加載至資料庫,並且我們需要檢測已經存在的記錄,

是為了更新紀錄而不是創建新的重複的記錄。

另一個原因是為了支援互相關聯的資料:數據記錄必須能夠與其他數據記錄關聯。實際的資料庫ID是在模組安裝期間

由資料庫自動分配的具有順序的編號。而外部ID提供了一種引用相關記錄的方法但不需要事先知道資料庫將被分配給其 紀錄的ID,允許我們定義Odoo數據文件中的資料關係。

Odoo則負責將外部ID名稱轉換為實際資料庫分配給它們的ID。這背後的機制很簡單:Odoo管理一個表單其內容儲存所

匹配的外部IDs與對應的數字數據庫ID:ir.model.data模型。

要檢查現有映射匹配,請轉到設置上方的技術部分的目錄並選擇“序列與身份標識”下的“外部標識符”目錄項。
例如,如果我們看外部IDs列表,並透過todo_app模組過濾它們,我們會看到模組創建前所生成的外部IDs:


我們可以看到外部標識符有一個完整的ID標籤。注意它是運用點( . )去連接模組名稱及其標識符名稱而組成例如:

todo_app.action_todo_task。

外部標識符只在Odoo模塊內部是唯一的,若兩個模組意外地選擇了相同標識符名稱是沒有衝突的風險。要構建一個通用

的唯一ID,Odoo結合模塊名稱與實際外部標識符名稱。你可以在Complete(通用) ID欄位中看到。

在資料文件中使用外部ID時,可以選擇要使用完整ID或只是外部ID名稱。通常使用外部ID名稱較為簡單,但是完整ID使

我們能夠參考來自其他模塊的數據記錄。當要這樣做時,請確保那些模組包含在模組依賴項中,以確保這些記錄在先前即 加載。

在列表的上方,我們有todo_app.action_todo_task的通用ID。這是我們為模組創建的目錄操作,其關聯到相應的目錄

項中。通過點擊它,我們去表單查看詳細資料在todo_app模塊中action_todo_task的外部ID映射到一個 ir.actions.act_window模型中特定的記錄ID--72。

此外提供一種方便地引用其他記錄的方法,外部ID還允許您避免重複導入數據時造成資料重複。如果外部ID已經存在,

現有記錄將被更新;你不需要創建新記錄。這就是為什麼在後續模塊升級,先前加載的記錄被更新而不是被複製。

上一节:第四章 模块数据
下一节:寻找外部标识符