上一篇內容:如何快速建立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' ],
-
進入應用找到自己的模組去升級
-
大功告成