Odoo11入門請假單模塊學習教程源碼


歡迎轉載,但必須明顯標注轉載地址。

系統: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、目錄結構:

  1. controllers
  2. 自定義的控制器實現,具體用法參考website模塊;自定義一些網頁或功能可通過Controller實現。
  3. models
  4. 這是ORM層。該層避免必須手動編寫大多數SQL並提供可擴展性和安全性服務。業務對象被聲明為繼承Model的類,這些類將被集成到數據庫中。
  5. security
  6. 訪問控制機制的安全策略配置。
  7. views
  8. 視圖文件。目錄models目錄下的模型對象的視圖文件,如表單視圖、列表視圖、搜索視圖、看板視圖等等
  9. __init__.py
  10. 模塊初始化文件,包含模塊中各種Python文件的導入指令。
  11. __manifest__.py
  12. 清單文件。存放模塊的信息(名稱、開發者、介紹、地址、版本等)、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、結果

 

有問題可以評論,一起討論交流。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM