在前七天我們主要從使用者的角度認識 Odoo,今天開始將切換到 開發者視角。要進行二次開發或建立新模組,理解 Odoo 的 MVC 架構 (Model–View–Controller) 是必須的基礎。這套設計模式讓 Odoo 保持彈性、擴充性與維護性,是它能成為強大開源平台的原因之一。
Odoo 透過 MVC 模式將系統分為三層:
這樣的分層設計,讓 Odoo 既能保持核心穩定,又能快速透過模組擴充功能。
在 Odoo 中,每個 Model 對應到資料庫的一個表格,並以 Python 類別定義。
models.Model
建立資料表。範例:
from odoo import models, fields
class Book(models.Model):
_name = 'library.book'
_description = 'Library Book'
name = fields.Char('Title', required=True)
author = fields.Char('Author')
published_date = fields.Date('Published Date')
Odoo 的前端顯示由 XML 定義,並透過 QWeb 引擎渲染。
常見的視圖類型:
範例:
<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"/>
</tree>
</field>
</record>
Controller 負責處理 HTTP 請求,常見於 Web 應用或 REST API 整合。
controllers
資料夾中。http.route
裝飾器來綁定 URL。範例:
from odoo import http
class LibraryController(http.Controller):
@http.route('/library/books', type='http', auth='public')
def list_books(self, **kwargs):
books = http.request.env['library.book'].search([])
return http.request.render('library.book_template', {'books': books})
Odoo 的 MVC 架構讓開發者能清楚地拆分:
在接下來的篇章,我將實際帶你 建立第一個 Odoo 模組 (Hello Odoo Module),從零開始實戰體驗開發流程。