上一篇內容:如何快速在odoo中創建自己的菜單
前言
上面的內容我們已經學會了如何去創建odoo的菜單,下面我們要學習的是odoo的基礎視圖tree視圖,我們的目標是實現型號管理的列表頁面
創建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視圖的使用