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和from视图。设置了顶级菜单和二级菜单。

扫描二维码关注公众号,回复: 3474049 查看本文章

三、安装模块

1、重启Odoo服务

2、开启开发模式

3、更新应用列表

 

4、安装应用

 

5、结果

有问题可以评论,一起讨论交流。

猜你喜欢

转载自www.cnblogs.com/luhuan/p/9752247.html