講完 Form View 資料創建後,再來就到資料集展示了,List View 能以簡潔的表格形式展示產品資訊,使得用戶能夠直觀地查看和管理產品資料。再來我們看一個以電商產品為例子的 Odoo List View 功能撰寫
我們可以創建一個簡單的 product.product 模型,包含基本的產品資訊,例如產品名稱、價格、庫存。
from odoo import models, fields
class Product(models.Model):
_name = 'product.product'
_description = 'Product Model'
name = fields.Char(string="Product Name", required=True)
price = fields.Float(string="Price")
stock = fields.Integer(string="Stock")
category_id = fields.Many2one('product.category', string="Category")
接下來,我們需要為該模型配置一個 List View。這可以通過 XML 來完成,定義如何展示產品資料。
<odoo>
<record id="view_product_list" model="ir.ui.view">
<field name="name">product.product.list</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<tree string="Product List">
<field name="name" string="Product Name"/>
<field name="price" string="Price"/>
<field name="stock" string="Stock"/>
<field name="category_id" string="Category"/>
</tree>
</field>
</record>
</odoo>
架構上非常相似,可以參考前一篇,【Day22】Odoo 電商產品模型,配合 Form View 來創建產品資料,有變化的在
...
<tree string="Product List">
<field name="name" string="Product Name"/>
<field name="price" string="Price"/>
<field name="stock" string="Stock"/>
<field name="category_id" string="Category"/>
</tree>
...
這一列顯示產品的名稱(來自 name 字段)。它會在列表中顯示為 "Product Name"。
這一列顯示產品的價格(來自 price 字段)。它會在列表中顯示為 "Price"。
這一列顯示產品的庫存數量(來自 stock 字段)。它會在列表中顯示為 "Stock"。
這一列顯示產品的分類(來自 category_id 字段)。category_id 是一個關聯字段(Many2one),它會顯示產品所屬的分類名稱,而不是 ID。它會在列表中顯示為 "Category"。
這個視圖會展示產品名稱、價格、庫存和所屬的分類,並提供以下功能:
在 Odoo 17 中,List View 是使用 <tree> 標籤來定義的。這個標籤不僅僅是用來表示樹狀視圖,事實上在 Odoo 中,它也代表一般的表格形式視圖,因此在 List View 中也是使用 <tree> 來顯示記錄。
範例(Odoo 17 的 List View 使用 <tree> 標籤):
<record id="view_product_list" model="ir.ui.view">
<field name="name">product.product.list</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<tree string="Product List">
<field name="name" string="Product Name"/>
<field name="price" string="Price"/>
<field name="stock" string="Stock"/>
<field name="category_id" string="Category"/>
</tree>
</field>
</record>
在 Odoo 18 中,List View 則更明確地使用 <list> 標籤來定義,進一步強化了它作為列表視圖的表現形式,而不再使用 <tree> 標籤。這樣的變化使得標籤名稱更直觀,更符合該視圖的功能。
範例(Odoo 18 的 List View 使用 <list> 標籤):
<record id="view_product_list" model="ir.ui.view">
<field name="name">product.product.list</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<list string="Product List">
<field name="name" string="Product Name"/>
<field name="price" string="Price"/>
<field name="stock" string="Stock"/>
<field name="category_id" string="Category"/>
</list>
</field>
</record>
在電商平台中,Odoo 的 List View 提供了一個直觀、易用的介面,用來高效管理產品資料。通過自定義 List View,可以顯示產品的名稱、價格、庫存狀態、分類等關鍵資訊,並支持排序、篩選和分組功能,幫助用戶快速查找和操作產品記錄。這使得 Odoo 成為一個強大的工具,適合處理大量商品數據,提升電商業務的效率與準確性。