zoukankan      html  css  js  c++  java
  • Odoo11入门请假单模块学习教程源码

    欢迎转载,但必须明显标注转载地址。

    系统:Windows10

    版本:Odoo11

    一、创建模块

    1、创建一个模块的骨架结构目录(在windows 的 CMD中)

    E:Odoo 11.0> pythonpython.exe serverodoo-bin scaffold qingjia serverodooaddons
    • E:Odoo 11.0 是我的Odoo安装根目录
    • scaffold 是Odoo的一个脚手架功能,脚手架是自动创建骨架结构以简化引导(在Odoo的情况下,新模块)。虽然没有必要,但它避免了设置基本结构和查找所有起始要求的乏味。
    • E:Odoo 11.0pythonpython.exe 是Odoo自带的Python环境
    • E:Odoo 11.0serverodoo-bin 是Odoo命令的入口
    • E:Odoo 11.0serverodooaddons 是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 、modelsmodels.py 、viewsviews.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、结果

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

  • 相关阅读:
    大数据架构资料
    SQLServer 随机生成指定范围的日期
    源码解析Django CBV的本质
    源码剖析Django REST framework的认证方式及自定义认证
    Django----中间件详解
    权限管理系统
    Django---分页器、中间件
    linux每日命令(37):top命令
    linux每日命令(36):wc命令
    linux每日命令(35):grep命令
  • 原文地址:https://www.cnblogs.com/luhuan/p/9752247.html
Copyright © 2011-2022 走看看