odoo基礎視圖入門學習- tree視圖的使用

上一篇內容:如何快速在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
    

大功告成

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

下一篇內容:odoo視圖入門學習 - from視圖的使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章