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、目录结构:
- 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、结果
有问题可以评论,一起讨论交流。