iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 23

【Day23】使用 Odoo List View 管理電商產品:讓商品列表展示更直觀

  • 分享至 

  • xImage
  •  

講完 Form View 資料創建後,再來就到資料集展示了,List View 能以簡潔的表格形式展示產品資訊,使得用戶能夠直觀地查看和管理產品資料。再來我們看一個以電商產品為例子的 Odoo List View 功能撰寫

文章架構

  • 建立一個簡單的產品模型並使用 List View 顯示
    • 建立產品 Model
    • 在 List View 中顯示產品資料
      • <tree> 標籤
      • <field> 標籤
    • List View 展示:排序、篩選、分組
  • Odoo 17 & 18,List View 定義變化
    • Odoo 17 的 List View
    • Odoo 18 的 List View

建立一個簡單的產品模型並使用 List View 顯示

建立產品 Model

我們可以創建一個簡單的 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 中顯示產品資料

接下來,我們需要為該模型配置一個 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>
    ...

<tree> 標籤

  • 功能:在 Odoo 17 中,<tree> 標籤用來定義一個列表視圖(List View),實際上是一個表格視圖,顯示多條記錄。儘管標籤名稱是 "tree",但在大多數情況下,它不表示樹狀結構,而是常見的平面列表。
  • 屬性:
    • string:為該視圖定義一個顯示名稱,這個名稱會顯示在 Odoo 界面的標題處。此處顯示為 "Product List"。
  • 用法:這個標籤包裹所有需要顯示的字段,構成了一個完整的表格,展示對應模型的多個記錄。

<field> 標籤

  • 功能:<field> 標籤用來定義每一列所顯示的字段,這些字段來自對應模型的資料庫。
  • 屬性:
    • name:指定要從模型中顯示的字段名稱。這些字段名稱是 Odoo 模型中的字段,如 name、price、stock、category_id 等。
    • string:此屬性用於定義在界面上顯示的列標題。如果不定義,將會使用 name 中的字段名稱作為標題。此處分別定義了 "Product Name"、"Price"、"Stock" 和 "Category" 作為對應列的標題。

<field name="name" string="Product Name"/>

這一列顯示產品的名稱(來自 name 字段)。它會在列表中顯示為 "Product Name"。

<field name="price" string="Price"/>

這一列顯示產品的價格(來自 price 字段)。它會在列表中顯示為 "Price"。

<field name="stock" string="Stock"/>

這一列顯示產品的庫存數量(來自 stock 字段)。它會在列表中顯示為 "Stock"。

這一列顯示產品的分類(來自 category_id 字段)。category_id 是一個關聯字段(Many2one),它會顯示產品所屬的分類名稱,而不是 ID。它會在列表中顯示為 "Category"。

List View 展示:排序、篩選、分組

這個視圖會展示產品名稱、價格、庫存和所屬的分類,並提供以下功能:

  • 排序:可以對每個欄位進行排序,例如按價格或庫存排序。
  • 篩選:可以按照分類、庫存狀態等進行篩選。
  • 分組:可以根據分類對產品進行分組展示。

Odoo 17 & 18,List View 定義變化

  • Odoo 17 使用 <tree> 標籤來定義表格視圖,包括 List View 和樹狀視圖。
  • Odoo 18 將 List View 明確地與 <list> 標籤相關聯,這更具可讀性和直觀性。

Odoo 17 的 List View

在 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

在 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 成為一個強大的工具,適合處理大量商品數據,提升電商業務的效率與準確性。


上一篇
【Day22】Odoo 電商產品模型,配合 Form View 來創建產品資料
下一篇
【Day24】Odoo 模組結構( __manifest__.py):用途與電商實踐範例
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言