我們在 Odoo 中處理 ERP 和電商應用時,模型定義和資料載入通常涵蓋了與產品、貨幣、國家等相關的結構和資料。這裡將會展示一個簡單的 Odoo 模型(Model)定義,並給出相應的 XML 資料文件來定義「產品種類」、「貨幣」以及「國家」相關的資料。
首先,讓我們定義 Odoo 的模型結構,這些模型代表了電商和 ERP 中的一些核心概念,例如「產品種類」、「貨幣」以及「國家」。這裡展示的模型定義會放在 models.py 文件中。
from odoo import models, fields
# 產品類別模型
class ProductCategory(models.Model):
_name = 'my_module.product.category'
_description = 'Product Category'
name = fields.Char(string='Category Name', required=True)
description = fields.Text(string='Category Description')
# 貨幣模型
class Currency(models.Model):
_name = 'my_module.currency'
_description = 'Currency'
name = fields.Char(string='Currency Name', required=True)
code = fields.Char(string='Currency Code', required=True)
symbol = fields.Char(string='Symbol')
rate = fields.Float(string='Exchange Rate')
# 國家模型
class Country(models.Model):
_name = 'my_module.country'
_description = 'Country'
name = fields.Char(string='Country Name', required=True)
code = fields.Char(string='Country Code', required=True)
currency_id = fields.Many2one('my_module.currency', string='Currency')
ProductCategory:產品類別,具有名稱和描述。
Currency:貨幣,具有名稱、代碼、符號以及匯率。
Country:國家,具有名稱、代碼,並且每個國家關聯到一個貨幣。
接下來,我們來看看如何用 XML 來定義資料,比如產品種類、貨幣和國家。這些 XML 文件會用來初始化模組中的基礎資料。這樣的資料載入非常適合 ERP 和電商系統,特別是涉及到國際市場和多種貨幣的情況。
data/product_category_data.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- 定義產品類別 -->
<record id="product_category_electronics" model="my_module.product.category">
<field name="name">Electronics</field>
<field name="description">All kinds of electronic devices</field>
</record>
<record id="product_category_fashion" model="my_module.product.category">
<field name="name">Fashion</field>
<field name="description">Clothing, shoes, and accessories</field>
</record>
</odoo>
這裡定義了兩個產品類別:「電子產品」和「時尚用品」。
data/currency_data.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- 定義貨幣 -->
<record id="currency_usd" model="my_module.currency">
<field name="name">US Dollar</field>
<field name="code">USD</field>
<field name="symbol">$</field>
<field name="rate">1.00</field>
</record>
<record id="currency_eur" model="my_module.currency">
<field name="name">Euro</field>
<field name="code">EUR</field>
<field name="symbol">€</field>
<field name="rate">0.85</field>
</record>
</odoo>
這裡定義了兩種貨幣:「美元(USD)」和「歐元(EUR)」,並設定了匯率。
data/country_data.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- 定義國家 -->
<record id="country_usa" model="my_module.country">
<field name="name">United States</field>
<field name="code">US</field>
<field name="currency_id" ref="currency_usd"/>
</record>
<record id="country_france" model="my_module.country">
<field name="name">France</field>
<field name="code">FR</field>
<field name="currency_id" ref="currency_eur"/>
</record>
</odoo>
這裡定義了兩個國家:「美國(US)」和「法國(FR)」,並且每個國家都關聯了一種貨幣。
XML 主要用於定義靜態數據,這些數據不會頻繁變動。比如,預設的公司資訊、產品類別、用戶角色等,都可以透過 XML 文件進行初始化配置。相比 Python 腳本,這些定義文件更容易在不同系統環境中重複使用,並且 XML 更容易維護和版本控制。
總結來說,XML 在 Odoo 和 ERP 系統中扮演著重要角色,因為它適合用來定義靜態資料結構、視圖佈局,並支持國際化等功能。XML 的結構化使其易於維護、版本控制,並且與 Python 結合使用,提供了強大的靈活性。