上一篇內容:如何快速創建odoo模塊,使用腳手架快速創建自己的odoo應用app
前言
在上一個教程中,我們已經實現了對模塊的創建,現在我們要對創建的模塊添加內容,這個教程將教你如何在odoo菜單中創建自己的菜單

創建ORM模型
因為odoo在菜單到視圖顯示的都是數據的內容,如果沒有模型類的支持,菜單也不能正常顯示,所以我們為了實現功能,先簡單做一個brands的品牌表
-
進入models->models.py文件寫入內容
from odoo import models, fields, api class Brands(models.Model): """ 品牌數據表 """ # 數據庫的名稱,名稱為fandx_brands,這里的點會在數據庫中轉換成_ _name = "fandx.brands" # 定義一個char類型字段,string為描述信息,在view視圖中會顯示 name = fields.Char(string="品牌名稱") -
在Navicat中的展示

-
這里會發現除了我們自己創建的name字段以外還有幾個字段這里是繼承了AbstractModel自動創建的,並且所有的表在創建的時候都會創建這幾個字段,如果有需要可以繼承這個模型進行創建
- id字段:主鍵字段
- create_uid字段:創建用戶的uid
- create_date字段:數據的創建時間
- write_uid字段:上一次更新的用戶uid
- write_date字段:上一次更新的時間
創建菜單視圖
-
在views文件夾下創建menutem.xml文件
<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="brand_action"/> <menuitem name="SKU管理" id="fandx_stock.menu_3" parent="fandx_stock.menu_root" action="brand_action"/> </odoo>- menuitem標簽:為創建菜單的標簽
- name屬性:就是在菜單顯示的內容
- id屬性:id標識,這里是唯一的即可
- parent屬性:父級,我們在下面定義parent就可以將下面3個子菜單定位在id為fandx_stock.menu_root的頁面中了
- action屬性:動作,必須制定到對於的act_windows視圖上,沒有指定則頁面不會顯示這個菜單功能
-
在views中創建brand.xml文件
<odoo> <record id="brand_action" model="ir.actions.act_window"> <field name="name">品牌管理</field> <field name="type">ir.actions.act_window</field> <field name="res_model">fandx.brands</field> <field name="view_mode">tree,form</field> </record> </odoo>- record標簽:語法標准,必須要寫在最外面
- id屬性:id標識,這里是唯一的即可
- model屬性:xml會繼承IrActionsActWindow的動作模型,odoo會根據模型來渲染視圖,我們每一個view都要設置一個基礎的act_windows視圖
- field->name="name":定義頁面的左上角顯示內容
- field->name="type":類型
- field->name="res_model":act_windows對應渲染的模型,這里寫上我們之前定義的fandx.brands模型即可
- field->name="view_mode":需要渲染的類型,這里先定義tree視圖和form視圖
-
在_manifest_.py中剛創建的兩個視圖
# 加載的視圖 'data': [ '....', 'views/brand.xml', 'views/menuitem.xml' ],- 這里要注意順序,菜單視圖一定要放在最后,act_windows視圖放在菜單視圖的上面
-
這個時候你如果去應用中升級了自己的模塊,你會發現並沒有在左側菜單中顯示,因為我們沒有對數據模型進行權限的配置,odoo會默認認為我們的用戶沒有讀取的權限
-
進入security->ir.model.access.csv文件中替換下面代碼
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_fandx_stock_fandx_brands,fandx_stock.fandx_brands,model_fandx_brands,base.group_user,1,1,1,1- id: 唯一標識,必須唯一
- name: 描述名稱,描述信息
- model_id:id:model的id格式是
model_模型類名 - group_id:id : group組的id,這里可以不填,或者寫上自己的定義的用戶組,以后的教程里會詳細講解group組的權限分配問題
- perm_read:查看
1有權限,0無權限,下面的一樣的 - perm_write:修改
- perm_create: 創建
- perm_unlink: 刪除
-
然后在data中打開對應的權限文件的屏蔽
# 加載的視圖 'data': [ 'security/ir.model.access.csv', 'views/brand.xml', 'views/menuitem.xml' ], -
進入應用找到自己的模塊去升級
-
大功告成
下一篇內容:odoo視圖入門學習- tree視圖的使用
