odoo11.0模块开发流程(一)

  • 运行odoo

    事先把各种依赖项安装好(最好装在虚拟环境中,不要装在系统里),跑起来后我们再去探究模块的定义。

    • PyCharm软件对着odoo-bin文件 run一遍,就可以跑起来了。
    • 或者命令行也可以(命令同时在运行的时候,也提供了很多额外设置的参数)

      python3 odoo-bin

      1.-d <database>, --database <database> # 数据库在安装或更新模块时使用。
      2.-i <modules>, --init <modules> # 运行服务器前要安装的模块,如果多个则逗号分隔列表,要跟-d 命令一起使用,因为需要数据库
      3.-u <modules>, --update <modules> #运行服务器前要更新的模块,如果多个则逗号分隔列表,要跟-d 命令一起使用,因为需要数据库
      4.--addons-path <directories> # 添加模块的路径
      
  • 自定义模块

    odoo-bin里面包含很多script插件命令,它提供了很多方便运行的命令,创建模块也是其中一个。因为odoo模块的规格不同于python模块,有着自己的要求,如果按着标准来手动建立也可以,可是有点繁琐,所以就应该是提供了快捷方式创建

    • 创建模块

      python3 odoo-bin scaffold <module name> <where to put it>
      
    • 为odoo添加一个addons path,使他能够找到我们的模块

      在odoo-bin文件里设置

      #!/usr/bin/env python3
      # set server timezone in UTC before time module imported
      __import__('os').environ['TZ'] = 'UTC'
      import odoo,sys
      if __name__ == "__main__":
      # 添加一下自定义模块的路径,让odoo知道需要搜索哪里,我这里是强制添加,懒得设置了
      odoo.modules.module.ad_paths.append(sys.path[0]+'/myaddons')
      odoo.cli.main()
      
    • 设置__manifest__.py文件

      默认的用命令创建好后,都有默认的一些设置,我们把需要改的设置一下就好了

      # -*- coding: utf-8 -*-
      {
      'name': "请假", # 模块的名称
      
      'summary': """
        员工请假单""", # 模块的摘要
      
      'description': """
        方便员工填写请假单
      """, # 模块用途的描述
      
      'author': "Pocket", # 模块编写作者
      'website': "http://www.baidu.com", # 模块相关网址
      
      # 类别可用于筛选模块清单中的模块
      'category': '工具/员工应用', # 模块类别
      'version': '1.0.0', # 模块版本号
      
      # 此模块要正常工作所需的任何模块
      'depends': ['base'], # 模块的依赖项列表,默认至少一个base
      
      # 始终加载
      'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
      ],
      # 仅在演示模式中加载
      'demo': [
        'demo/demo.xml',
      ],
      'auto_install': False, # 不要自动安装该模块
      'application': True, # 表示该模块是一个应用
      }
      
    • 更新应用列表

      如果有新模块的增加,需要更新一遍,才能搜索出来,如果应用里没有更新应用列表功能,说明没有开启开发者模式,去设置里开启激活一下就好了。这时候再去搜索应该就能看到你自己定义的模块了。

    • 编写数据模型

      odoo中的数据模型使用python类来编写,继承自odoo 的 models.Model模块
      声明好后会跟postgreSQL数据库进行ORM映射关系,当模块被安装,编写的数据模型会让postgreSQL去自动创建对应的数据表结构。

    # -*- coding: utf-8 -*-
    from odoo import models, fields, api
    '''
    在模块安装完成后,odoo的ORM框架会自动把这个对象映射到数据库表
    属性类型会映射到表字段数据类型,表名是模块名_对象名,
    比如这个对象对应的表名是qingjia_qingjiadan,我们可以去postgreSQL里查看到
    '''
    class qingjia(models.Model):
      _name = 'qingjia.qingjiadan' # qingjia.qingjiadan对应在qsql中就是qingjia_qingjiadan,命名规则是这样的,我们必须严格遵守
    
      name = fields.Char(string='申请人') # name是字段,string定义的申请人是显示在view上的
      days = fields.Integer(string='天数')
      startdate = fields.Date(string='开始日期')
      reason = fields.Text(string='请假事由')
    
      # value2 = fields.Float(compute="_value_pc", store=True)
      # @api.depends('value')
      # def _value_pc(self):
      #     self.value2 = float(self.value) / 100
    

results matching ""

    No results matching ""