歡迎轉載,但必須明顯標注轉載地址。
系統:Windows10
版本:Odoo11
一、創建模塊
1、創建一個模塊的骨架結構目錄(在windows 的 CMD中)
E:\Odoo 11.0> python\python.exe server\odoo-bin scaffold qingjia server\odoo\addons
- E:\Odoo 11.0 是我的Odoo安裝根目錄
- scaffold 是Odoo的一個腳手架功能,腳手架是自動創建骨架結構以簡化引導(在Odoo的情況下,新模塊)。雖然沒有必要,但它避免了設置基本結構和查找所有起始要求的乏味。
- E:\Odoo 11.0\python\python.exe 是Odoo自帶的Python環境
- E:\Odoo 11.0\server\odoo-bin 是Odoo命令的入口
- E:\Odoo 11.0\server\odoo\addons 是Odoo模塊的存放目錄
2、目錄結構:
- controllers 自定義的控制器實現,具體用法參考website模塊;自定義一些網頁或功能可通過Controller實現。
- models 這是ORM層。該層避免必須手動編寫大多數SQL並提供可擴展性和安全性服務。業務對象被聲明為繼承Model的類,這些類將被集成到數據庫中。
- security 訪問控制機制的安全策略配置。
- views 視圖文件。目錄models目錄下的模型對象的視圖文件,如表單視圖、列表視圖、搜索視圖、看板視圖等等
- __init__.py 模塊初始化文件,包含模塊中各種Python文件的導入指令。
- __manifest__.py 清單文件。存放模塊的信息(名稱、開發者、介紹、地址、版本等)、views配置等
二、編寫代碼
這里我們關注三個文件:
__manifest__.py 、models\models.py 、views\views.xml
1、__manifest__.py
1 # -*- coding: utf-8 -*- 2 { 3 'name': "qingjia", 4 5 'summary': """ 6 請假模塊 7 """, 8 9 'description': """ 10 請假模塊 11 """, 12 13 'author': "LuHuan", 14 'website': "https://www.cnblogs.com/luhuan", 15 16 # Categories can be used to filter modules in modules listing 17 # Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml 18 # for the full list 19 'category': 'Uncategorized', 20 'version': '0.1', 21 22 # any module necessary for this one to work correctly,一般繼承這個base模塊即可。如果需要其他模塊的功能再說。 23 'depends': ['base'], 24 25 # always loaded,需要加載的view和模板 26 'data': [ 27 # 'security/ir.model.access.csv', 28 'views/views.xml', 29 'views/templates.xml', 30 ], 31 # only loaded in demonstration mode,一般不需要這個demo,可以刪掉 32 'demo': [ 33 'demo/demo.xml', 34 ], 35 }
2、models.py
1 # -*- coding: utf-8 -*- 2 from odoo import models, fields, api 3 4 5 class QingJia(models.Model): 6 _name = 'qingjia.qingjia' 7 name = fields.Char(string=u"申請人") 8 days = fields.Integer(string=u"天數") 9 startdate = fields.Date(string=u"開始日期") 10 reason = fields.Text(string=u"請假事由")
這是Python代碼,需要按照Python的規范編寫
_name 表示該模塊的名稱,規范:模塊名稱.模型名稱
3、views.xml
1 <odoo> 2 <data> 3 <!-- tree視圖 --> 4 <record id="view_tree_qingjia_qingjia" model="ir.ui.view"> 5 <field name="name">請假單列表</field> 6 <field name="model">qingjia.qingjia</field> 7 <field name="arch" type="xml"> 8 <tree> 9 <field name="name"/> 10 <field name="days"/> 11 <field name="startdate"/> 12 </tree> 13 </field> 14 </record> 15 16 <!-- form視圖 --> 17 <record id="view_form_qingjia_qingjia" model="ir.ui.view"> 18 <field name="name">請假單</field> 19 <field name="model">qingjia.qingjia</field> 20 <field name="arch" type="xml"> 21 <form> 22 <sheet> 23 <group name="group_top" string="請假單"> 24 <field name="name"/> 25 <field name="days"/> 26 <field name="startdate"/> 27 <field name="reason"/> 28 </group> 29 </sheet> 30 </form> 31 </field> 32 </record> 33 34 <!-- 視圖動作 --> 35 <act_window id="action_qingjia_qingjia" 36 name="請假單" 37 res_model="qingjia.qingjia" 38 view_mode="tree,form" /> 39 40 <!-- 頂級菜單 --> 41 <menuitem name="請假" id="menu_qingjia" active="False"/> 42 43 <!-- 二級菜單 --> 44 <menuitem name="請假單" id="menu_qingjia_qingjia" parent="menu_qingjia" action="action_qingjia_qingjia"/>
Views有很多種視圖,這里寫了基本的tree和form視圖。設置了頂級菜單和二級菜單。
三、安裝模塊
1、重啟Odoo服務
2、開啟開發模式
3、更新應用列表
4、安裝應用
5、結果
有問題可以評論,一起討論交流。