odoo檢視入門學習- tree檢視的使用

FANDX發表於2021-04-15

上一篇內容:如何快速在odoo中建立自己的選單

前言

上面的內容我們已經學會了如何去建立odoo的選單,下面我們要學習的是odoo的基礎檢視tree檢視,我們的目標是實現型號管理的列表頁面

image

建立model

之前我們已經學了簡單的建立了一個選單,我們也知道了檢視的渲染是離不開model的支援的,我們現在的目標是在型號管理中建立tree檢視,那麼我們就要先建立型號管理對應的model

電商中都有SPU和SKU的概念,這裡我們就以手機為舉例,那麼一個手機型號就是一個簡單的SPU,對應手機的不同的顏色和對應的記憶體大小等不同的引數所產生的商品那麼就是SKU(SKU是物理上不可分割的最小存貨單元

  • SPU:iphoneXs
  • Sku:32G, 金色
  • 品牌:蘋果

那麼我們就可以建立一個簡單的model(寫在model.py中)

class GoodsSpu(models.Model):
    """
    型號表
    """
    _name = "fandx.goods.spu"

    name = fields.Char("商品名稱")
    code = fields.Char("商品編號")
    brand_id = fields.Many2one("fandx.brands", "品牌")

    create_date = fields.Datetime("建立時間", default=datetime.now())

odoo的orm方法會在以後的教程中進行講解,現在我們可以理解為建立了一個資料表

  • 表名:fandx_goods_spu

  • name欄位:varChar型別

  • code欄位:varChar型別

  • brand_id欄位:外來鍵欄位,所以這裡是int型別

  • create_date欄位:datetime型別

建立act_window和menu

在我們建立了model下面的目標就是在頁面中去渲染上面的幾個欄位的資料

既然要渲染資料庫,odoo中不管什麼檢視,都要去建立基礎的act_windows檢視和menu選單

  • 在views資料夾中建立goods.xml檔案

    <odoo>
        <record id="goods_spu_action" model="ir.actions.act_window">
            <field name="name">型號管理</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">fandx.goods.spu</field>
            <field name="view_mode">tree</field>
        </record>
    </odoo>
    
  • 注意:

    • res_model要寫剛才建立的model的名稱
    • view_mode要寫上tree檢視
  • 修改menuitem選單中action

    <odoo>
        <menuitem name="FANDX倉庫" id="fandx_stock.menu_root"/>
        <menuitem name="品牌管理" id="fandx_stock.menu_1" parent="fandx_stock.menu_root" action="brand_action"/>
        <menuitem name="型號管理" id="fandx_stock.menu_2" parent="fandx_stock.menu_root" action="goods_spu_action"/>
        <menuitem name="SKU管理" id="fandx_stock.menu_3" parent="fandx_stock.menu_root" action="brand_action"/>
    </odoo>
    

建立tree檢視程式碼

下面就是我們這次的重頭戲了建立tree檢視程式碼

  • 繼續在goods.xml中在act_window上面新增程式碼

    <record id="goods_spu_view_tree" model="ir.ui.view">
      <field name="name">型號管理列表</field>
      <field name="model">fandx.goods.spu</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="brand_id" />
          <field name="code" />
          <field name="create_date" />
        </tree>
      </field>
    </record>
    <record id="goods_spu_action" model="ir.actions.act_window">
      <field name="name">型號管理</field>
      <field name="type">ir.actions.act_window</field>
      <field name="res_model">fandx.goods.spu</field>
      <field name="view_mode">tree,form</field>
    </record>
    
  • 非常簡單,在record中大部分都是固定寫法,在tree標籤中寫上對應的欄位名稱即可

  • 注意點

    • <field name="model">模型名稱</field> 模型名稱一定要一致並且不能寫錯,因為odoo會根據Model的對應到對應的view檢視
    • tree標籤,這是tree檢視的標誌,不可以少
    • tree標籤中的field,name等於值和資料庫的欄位名要一致才能正確渲染

修改security許可權

上面的工作做完,有的小夥伴可以嘗試的更新了自己的模組,發現自己的選單還不見了,odoo中的所有模型在分配之後都會基於許可權進行頁面渲染,所以這裡需要給fandx_goods_spu賦予許可權

  • 在security資料夾下的ir.model.access.csv檔案新增內容

    ......
    access_fandx_goods_spu,fandx_stock.fandx_goods_spu,model_fandx_goods_spu,base.group_user,1,1,1,1
    

大功告成

去應用中找到自己的模組升級一下看看是否顯示正常

相關文章