views/
功能:
此目錄包含前端的 QWeb XML 文件,負責定義用戶界面的佈局和顯示。通過這些文件,系統能將模型中的數據展示給用戶,並定義用戶如何與系統進行交互。
範例實作:
<odoo>
<record id="view_custom_model_form" model="ir.ui.view">
<field name="name">custom.model.form</field>
<field name="model">custom.model</field>
<field name="arch" type="xml">
<form string="Custom Model">
<group>
<field name="name"/>
<field name="description"/>
</group>
</form>
</field>
</record>
<record id="action_custom_model" model="ir.actions.act_window">
<field name="name">Custom Model</field>
<field name="res_model">custom.model</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
這段 XML 定義了一個表單視圖,展示 custom.model
的資料,並且允許用戶在前端與資料互動。
security/
功能:
此目錄包含定義資料訪問權限的文件,如 ACL(訪問控制列表)。這些文件用於確保不同的用戶角色只能查看和操作他們有權限的資料。
範例實作:
ir.model.access.csv
文件定義了用戶對模型的訪問權限:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_custom_model_user,access.custom.model,model_custom_model,base.group_user,1,1,1,0
這表示一般用戶(base.group_user
)對於 custom.model
有讀取、創建、寫入的權限,但無法刪除資料。
data/
功能:
此目錄通常包含初始數據或配置數據,通常以 XML 格式儲存。這些數據可以在模組安裝時自動載入,設置預設值或建立一些必須的記錄。
範例實作:
<odoo>
<record id="custom_model_data_1" model="custom.model">
<field name="name">Sample Data 1</field>
<field name="description">This is the first piece of sample data.</field>
</record>
<record id="custom_model_data_2" model="custom.model">
<field name="name">Sample Data 2</field>
<field name="description">This is the second piece of sample data.</field>
</record>
</odoo>
這段 XML 文件會在模組安裝時建立兩筆樣本數據。
__manifest__.py
:確保模組的元數據和依賴項正確定義。models/
):定義數據結構和業務邏輯。views/
):編寫前端界面的佈局和行為。security/
):根據不同的角色定義訪問權限。data/
):提供必要的數據或設定。這樣可以確保模組的每一個部分都相互協調,並在系統中正確運行。
這樣就完成了介紹odoo的模組結構啦!🌟