在前幾篇我們已經熟悉了 Odoo 的 Model 與 ORM,今天要進一步學習如何透過 Views 將資料展示給使用者。Odoo 的前端採用 XML + QWeb 模板引擎,開發者可以靈活定義不同的視圖,讓資料不僅能被儲存,也能以合適的方式呈現。
Odoo 的 View 負責控制「資料怎麼被顯示與操作」。
常見的視圖類型有:
這些視圖都以 XML 定義,並由 Odoo 的 QWeb 引擎渲染。
以下是最簡單的 List 視圖:
<record id="view_library_book_tree" model="ir.ui.view">
<field name="name">library.book.tree</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="author"/>
<field name="published_date"/>
</tree>
</field>
</record>
這段程式碼會顯示一本書的清單,包含書名、作者與出版日期。
Form 視圖通常用於單筆資料的檢視與編輯:
<record id="view_library_book_form" model="ir.ui.view">
<field name="name">library.book.form</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="author"/>
<field name="published_date"/>
</group>
</sheet>
</form>
</field>
</record>
這樣一來,使用者點擊清單中的書籍,就能進入詳細頁面進行編輯。
Kanban 視圖提供更直觀的視覺化介面,適合用於任務追蹤或銷售管線:
<record id="view_library_book_kanban" model="ir.ui.view">
<field name="name">library.book.kanban</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<kanban>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<strong><field name="name"/></strong>
<div><field name="author"/></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
要讓這些視圖能被使用者存取,我們需要建立 Action 與 Menu:
<record id="action_library_book" model="ir.actions.act_window">
<field name="name">Books</field>
<field name="res_model">library.book</field>
<field name="view_mode">tree,form,kanban</field>
</record>
<menuitem id="menu_library_root" name="Library"/>
<menuitem id="menu_library_books" name="Books" parent="menu_library_root" action="action_library_book"/>
這樣一來,系統就會在主選單新增一個 Library → Books 的選單項目。
Odoo 的 Views 提供了多種方式呈現資料:
透過 XML 與 QWeb,你可以完全掌控資料顯示方式,並結合 Action/Menu 將功能串接到使用者介面。在下一篇文章中,我將帶你認識 Odoo Controllers 與 REST API 實作,學習如何處理 HTTP 請求與外部系統整合。