首頁>Club>
想了解odoo頁面開發能實現多大程度的實施邊界
9
回覆列表
  • 1 # Odoo老楊

    本文來自《免費開源企業資訊化快速開發平臺 Odoo開發指南》的第二章精選內容連載。如需免費獲取本書,請訪問開源智造(OSCG)官網

    建立工作資料庫

    透過前面的學習,我們應該都有一個 PostgreSQL 資料庫和 Odoo 伺服器供運行了。在開始使用我們的專案前還需要再建立一個 Odoo 資料庫。如果您在本地安裝 Odoo 並保留了預設設定,則可以透過http://localhost:8069/開啟 Odoo。第一次開啟時,還沒有可用的資料庫,此時可以看到一個用於建立資料庫的頁面:

    建立資料庫需的資訊有:

    登入介面底部有一個 Manage Databases 的連結,點選進入會可以看到當前可用的資料庫,可對它們進行備份、複製和刪除操作,當然還可以建立新的資料庫。直接進入的地址為:http://localhost:8069/web/database/manager

    “ 小貼士:資料庫管理器可進行一些管理操作,預設開啟且沒有保護措施。雖然對於開發來說這樣非常方便,但即便是在測試或開發環境,對包含有真實資料的資料庫都存在安全風險。建議設定一個複雜的管理密碼甚至最好是關閉這一功能(在配置檔案中設定 list_db = False)”

    現在我們已有經了 Odoo 例項和資料庫,下一步就是開啟開發者模式這個用於實現我們專案的工具。

    開啟開發者模式

    要實現我們的專案,這裡需要用到開發者模式所提供的工具。開發者模式使我們可以在使用者介面中直接對 Odoo 應用進行自定義操作。這有利於我們快速修改和新增功能,可用於進行一些新增欄位的小調整乃至像建立帶有多個模型、檢視和選單項的應用這樣的複雜自定義開發。

    但這種直接在使用者介面執行的自定義開發相對於在後續章節講到的程式設計工具而言也有其侷限性,如它無法新增或擴充套件預設的 ORM 方法(雖然有時自動化動作足以作為一個替代方案)。它也不易於整合到結構性開發流,如版本控制、自動化測試、部署到多環境(質量測試、預釋出和生產環境)。

    本文我們主要使用開發者模式來介紹在 Odoo 框架中應用配置是如何組織的、如何在開發者模式下進行簡單的自定義和快速列出所要實現方案的框架或原型。進入 Settings > Dashboard, 即可在右側下方看到Activate the developer mode連結,點選該連結即可開啟開發者模式(Odoo 9.0版本及其以前的版本,開發者模式在 User 選單的 About 對話方塊視窗中進行開啟)。

    在該頁面我們還會看到一個Activate the developer mode (with assets)的選項,這個用於不對靜態檔案進行壓縮,通常用於除錯前端程式碼,開啟後瀏覽的速度也會略慢。為加快載入速度,客戶端中的 JavaScript 和 CSS 檔案通常會被壓縮。但這也導致我們很難對前端程式碼進行除錯,Activate the developer mode (with assets)選項會把這些靜態檔案按照獨立檔案、非壓縮的方式進行載入。

    我們也可以透過修改當前的 URL 來進入開發者模式,這樣就無需進入 Settings 頁面,僅需修改連結中的…/web#…為…/web?debug#…或…/web?debug=assets#…,比如修改http:///localhost:8069/web#home為http://localhost_8069/web?debug#home。雖然沒有直接的連結來開啟前端框架的開發者模式,但也可以透過在前端頁面URL上新增?debug=assets 來取消靜態檔案的壓縮, 但需要注意在我們進入其它頁面時這個標記可能就會消失。

    “ 小貼士:Firefox 和 Chrome均提供開啟和取消開發者模式的外掛,請在火狐或 Chrome 的應用商店中搜索 Odoo debug 進行安裝”

    開發者模式一經開啟,在選單中就會增加兩個選項:

    開發者工具選單,以除錯圖示的形式出現在右上角使用者名稱和頭像的左側Settings 中的 Technical 選單項

    開發者模式還會在表單欄位上新增一個額外資訊:將滑鼠懸停在欄位上方,就會顯示一些相關技術資訊。下一部分我們一起來學習相關的開發者模式功能。

    為已有模型新增欄位

    為已有表單新增欄位是種常見的自定義操作,我們無需建立自定義模組即可在使用者介面中進行實現。就我們 To-do 應用而言,需要可以選取一組使用者對 To-do 項進行協作。我們可以透過在 partner 表單中新增標識來找到這些使用者,那麼接下來為 partner 模型新增一個Is Work Team?標記。

    安裝完成後即可在頂級選單中找到 Contacts 項。

    為模型新增欄位

    開啟開發者模式後,我們可透過選單Settings > Technical > Database Structure > Models 來檢視模型的定義。這時搜尋 res.partner(未安裝其它應用的情況下第一個即是),對應的模型描述為 Contact。點選開啟表單檢視,這時就可以看到 partner 模型的各類資訊,包含欄位列表:

    Field Name: x_is_work_teamField Label: Is Work Team?Field Type: Boolean

    欄位名(Field Name)必須以 x_開頭,這是在使用者介面建立模型和欄位強制要求的(否則儲存時會提示Custom fields must have a name that starts with ‘x_’ !),透過外掛模組的自定義開發不受這一限制。只修改新增以上資訊點選Save & Close儲存即可。 這個模型有80多個欄位(如未安裝 Contacts 僅50多個欄位),我們需要透過右上角的向右箭頭瀏覽到最後一頁才能看到新建立的欄位。這時再點選左上角的 Save 按鈕進行最終的儲存。

    為表單檢視新增欄位

    我們已經為 partner 模型建立了新欄位,但對使用者仍不可見,要實現這點我們還要在相應的檢視中進行新增操作。再回到前述的 res.partner模型詳情頁,點選 Views 標籤,我們就可以看到模組的各個 view 定義。正如所見,每個檢視都是一條資料庫記錄,修改或新增檢視記錄即時生效,在下一次載入檢視時即可見:

    檢視列表中有一些需要注意的事項,我們看到有不同的檢視型別(View Type),如表單檢視(Form)、樹狀列表檢視(Tree)、搜尋檢視(Search)和看板檢視(Kanban)。搜尋檢視指的是右上角搜尋框中的過濾選項。其它檢視的資料展示方法也各不相同,基本的型別有列表檢視和表單檢視(用於檢視詳細資訊)。

    “ 小貼士:樹狀檢視(Tree) 和 列表檢視(List) 實為同一檢視,實際上Odoo 中的為列表檢視,樹狀檢視的名稱是由歷史原因產生的 – 過去列表檢視是以樹狀層級結構來進行展示的。”

    可以看到同一檢視型別存在多個定義,透過 View Type 進行排序可以更清晰地看出。每種檢視型別(如表單檢視)可以有一個或多個base檢視定義(包含空的繼承檢視欄位)。選單項使用視窗動作(Window Action)可以指定要用到的base檢視,如果沒有定義,將使用排序值(Sequence)最低的,因而可將其視為預設檢視。 點選檢視,可以在表單中看到包含排序值在內的所有詳情:

    每個base檢視都可以有多個擴充套件,稱為繼承檢視。每個繼承檢視可以對base檢視新增修改,如對已有表單新增欄位。

    “ 小貼士:繼承檢視自身也可以被其它檢視繼承,這時最外層繼承在內層繼承執行後作用於base檢視。”

    res.partner 模型會包含眾多的檢視定義,因為類似我們的很多應用都需要對其進行擴充套件。一個替代方法是進入我們需要擴充套件的某一具體檢視,使用開發者工具選單對其進行編輯。這也可用於瞭解某一檢視在使用者介面的某處被使用了。下面我們就來進行操作:

    2. 在表單檢視介面,點選開發者工具選單(右上角除錯圖示)並選擇編輯檢視(Edit View:Form),這時可以看到與前述模型頁面相同的檢視詳情表單,但展示在實際定義使用base檢視之上。也就是res.partner.form檢視,透過External ID可以檢視模組所有者。本處為base.view_partner_form,所以我們知道這個檢視屬於base模組。在Architecture欄位中,我們可以看到base檢視定義的 XML 程式碼。我們可以在這裡編輯檢視結構並新增我們的新欄位,但從長期看這不是一個好辦法:這個檢視屬於一個外掛模組,一旦模組被更新,自定義的程式碼就會被覆蓋並丟失。修改檢視的正確姿勢為建立一個繼承檢視(Inherited Views)擴充套件:

    4. 使用繼承檢視標籤我們可以為 base 檢視新增擴充套件檢視:

    首先我們需要在原始檢視選擇一個元素作為擴充套件點,我們可以透過檢視 base檢視的結構選擇一個包含 name 屬性的 XML 元素,大多數情況選擇的是一個<field>元素,此處我們選擇<field name=”category_id”…>元素:此時會彈出名為Create Views which inherit from this one的視窗,填入如下內容

    View Name: Contacts – Custom “Is Work Team” flag

    Architecture:輸入如下 XML程式碼

    <field name="category_id" position="after"> <field name="x_is_work_team" /></field>

    其它重要欄位,如 Model, View Type 和 Inherited View 使用預設值即可

    在儲存修改後過載聯絡人表單檢視頁面即可檢視到變化,在大數瀏覽器中可以使用 F5快捷鍵來過載頁面。這時開啟任意聯絡人名片,可以看到右側 Tags 欄位下會多出一個新欄位:

  • 中秋節和大豐收的關聯?
  • 為何說“張飛三計賽諸葛”?有何依據?