odoo10 学习笔记2(简单的请假模块)

在windows cmd命令行下:

e:
cd E:\GOdoo10
E:\GOdoo10\runtime\python\python source\odoo-bin scaffold qingjia myaddons

E:\GOdoo10 是odoo10绿色版的解压目录。
E:\GOdoo10\runtime\python\python 这个是绿色版自带的python环境,source\odoo-bin 是odoo10源码中的odoo命令入口,scaffold 是odoo的脚手架功能,可以创建一个标准的odoo模块框架,qingjia是创建的模块名,myaddons是模块所放置的目录路径。模块加载目录有两个,一个是GOdoo10\myaddons,另一个是GOdoo10\source\addons,但是按约定GOdoo10\source\addons放系统模块,GOdoo10\myaddons放自己开发的模块。

odoo10 学习笔记2(简单的请假模块)_第1张图片
请假单目录结构

建立完成后,目录是这样的,这里是用pycharm进行开发的,也可以用vs2015进行开发。

odoo10 学习笔记2(简单的请假模块)_第2张图片
激活开发者模式

以管理员身份登录系统,设置>激活开发者模式,odoo中很多操作和设置是需要管理员身份在开发者模式下才能进行的。

odoo10 学习笔记2(简单的请假模块)_第3张图片
安装请假模块

应用>更新应用列表,更新应用列表是为了能够搜索到刚刚添加的qingjia模块。更新完成后,在搜索栏关闭“应用”标签,然后输入qingjia搜索,能看到我们的模块了。安装qingjia模块,安装完成后会发现什么也没增加,正常,因为脚手架中还没有加入任何代码。现在开始加入代码,编辑文件__manifest__.py

# -*- coding: utf-8 -*-
{
    'name': "qingjia",

    'summary': """
        请假模块""",

    'description': """
        请假模块
    """,

    'author': "leo",
    'website': "http://www.yourcompany.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
}

这是整个模块的配置文件,配置项从字面上很容易理解。
name:模块名,会显示在模块列表中。
summary:摘要,在模块详情显示。
description:描述,在模块详情显示。
depends:模块依赖项,在这个模块中没有需要依赖的其它模块,保留默认的base。
data:模块资源文件,视图、菜单、权限等都可以写在资源文件中。
demo:模块演示数据。

修改模块的类文件 models/models.py

from odoo import models, fields, api

class qingjiadan(models.Model):
    _name = 'qingjia.qingjiadan'
    name = fields.Char(string="申请人")
    days = fields.Integer(string="天数")
    startdate = fields.Date(string="开始日期")
    reason = fields.Text(string="请假事由")

这里我们定义了qingjiadan对象模型,包含四个属性,name,days,startdate,reason。在模块安装完成后,odoo的ORM框架会自动把这个对象映射到数据库表。属性类型会映射到表字段数据类型,表名是模块名_对象名,比如这个对象对应的表名是qingjia_qingjiadan

修改资源文件 views/views.xml


  
             
    
      请假单列表
      qingjia.qingjiadan
      
        
          
          
          
        
      
        

    
    
      请假单
      qingjia.qingjiadan
      
        

这里定义了一个tree视图,一个form视图,一个视图动作,还有两个菜单。
tree视图用于显示请假单列表页面。

id tree视图的全局唯一标识
model 资源类型,tree视图和form视图都是ir.ui.view,这里对应ir_ui_view数据库表,模块安装后,资源数据会写入对应的数据库表中。
qingjia.qingjiadan
将这个视图与我们之前定义的对象模型qingjia.qingjiadan进行绑定。


        
            
            
            
        

这里表示这是一个tree视图,并定义列表项显示的列。在列表项中显示name,days,startdate三个字段的内容,这里字段都是在qingjia.qingjiadan对象模型中定义的。
form视图用于显示请假单详情页,定义方式与tree视图类似。有两个特殊的容器是用于页面布局的。

    

这里定义视图动作,视图动作将菜单、视图、模型进行关联。
name 会在模块的导航条中显示
res_model 视图动作绑定的模型
view_mode 视图动作关联的视图类型

    
    

    
    

这里定义了两级菜单,顶级菜单将出现在odoo导航菜单上,二级菜单的通过parent属性与顶级菜单关联,action是菜单点击动作响应方法。

odoo10 学习笔记2(简单的请假模块)_第4张图片
模块升级

修改完代码后,重启odoo服务,重新登录系统,在应用>应用中再次找到我们之前安装过的qingjia模块,进入模块详情,把qingjia模块升级。

odoo10 学习笔记2(简单的请假模块)_第5张图片
请假单tree视图
odoo10 学习笔记2(简单的请假模块)_第6张图片
请假单form视图

好了,现在可以看到请假模块界面,能实现基本的增删改查功能。

你可能感兴趣的:(odoo10 学习笔记2(简单的请假模块))