博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openERP笔记 自定义模块开发
阅读量:5762 次
发布时间:2019-06-18

本文共 5711 字,大约阅读时间需要 19 分钟。

##需求描述

  1. 输入和查询课程,把信息储存到课程对象里
  2. 课程包含以下信息:名称,价格,天数,开始日期,教师,学员
  3. 每个课程可以有多个学员,要记录学员的姓名、电话、电子邮件
  4. 课程可以添加教材和作业等文档附件
  5. 用户可以设置默认值以加速输入
  6. 可以按名称查询课程,也可以用其他信息查找课程,并保存常用查询条件
  7. 可以导出课程信息到excel文件,并支持导入
  8. 可以按日期查看课程,并调整课程时间
  9. 老师只能看到自己的课程

##编写课程模块

###PyCharm中创建工程

PyCharm中创建一个工程my_training, 存放在OE addons目录下, 并在该工程中打开OE目录(见之前的文章).

###文件结构

模块名命名为”my_training”, 目录下四个文件, 如下:

|--my_training     |--__init__.py     |--__openerp__.py     |--lesson.py     |--lesson_view.xml

###__init__.py

Python模块描述文件, 每个OE模块也是一个Python模块.

# -*- coding: utf-8 -*-import lesson

###__openerp__.py

# -*- coding: utf-8 -*-{    "name": "My Training", #模块名    "version": "1.0",        #模块版本    "description": 'My Training Demo', #模块说明    "author": "Jeff",    #作者    "website": "http://www.jeffzhang.cn", #网址    "depends": [],                      #依赖的模块    "data": ["lesson_view.xml"],    "demo": [],    "installable": True,                #可否安装    'auto_install': False, }

###lesson.py

# -*- coding: utf-8 >-*-from openerp.osv import fields, osvclass my_training_lesson(osv.osv):    _name = 'my.training.lesson'    _discription = u'培训课程示例'    _columns = {        'name': fields.char(u'课程名',size=64, select=True),        'date_start': fields.date(u'开始日期', select=True),        'total_day': fields.float(u'总天数', digits=(16,1)),        'teacher': fields.many2one('res.users', u'授课老师'),        'students': fields.many2many('res.partner', string=u'学生'),        'price': fields.float(u'价格', digits=(16,2)),    }my_training_lesson()

###lesson_view.xml

课程表单
form
my.training.lesson
课程列表
tree
my.training.lesson
课程
my.training.lesson
form
form,tree

##通过继承修改模块

Custom Module Development第一部分中说明了怎么扩展一个系统模块, 这部分扩展刚才编写的课程模块.

###PyCharm中创建工程

PyCharm中创建一个工程my_training_classroom, 存放在OE addons目录下, 并在该工程中打开OE目录(见之前的文章).

###文件结构

模块名命名为”my_training_classroom”, 目录下六个文件, 如下:

|--my_training_classroom     |--__init__.py     |--__openerp__.py     |--lesson.py  #继承my.training.lesson对象的文件     |--classroom.py     |--lesson_view.xml     |--classroom_view.xml

###__init__.py

# -*- coding: utf-8 -*-import lessonimport classroom

###__openerp__.py

# -*- coding: utf-8 -*-{    "name": "My Training Classroom", #模块名    "version": "1.0",        #模块版本    "description": 'My Training Demo -- ClassRoom', #模块说明    "author": "Jeff",    #作者    "website": "http://www.jeffzhang.cn", #网址    "depends": ["my_training"],                      #依赖的模块    "data": [        "lesson_view.xml",      # 需要继承的视图        "classroom_view.xml",],   # 模块更新时读入的文件    "demo": [],    "installable": True,                #可否安装    'auto_install': False, }

###classroom.py

from openerp.osv import fields, osvclass my_training_classroom(osv.osv):    _name = 'my.training.classroom'    _discription = u'教室'    _columns = {        'number': fields.char(u'编号', size=64, select=True),        'capacity': fields.integer(u'容纳人数', select=True),        'location': fields.char(u'地点', size=125, select=True),    }my_training_classroom()

###lesson.py

from openerp.osv import fields, osvclass my_training_lesson(osv.osv):    _name = 'my.training.lesson'  #本对象的名称    _inherit = 'my.training.lesson'  #要继承的对象的_name    _columns = {       'classroom_id': fields.many2one('my.training.classroom', u'教室'), #添加一个教室属性,为多对一对象。    }my_training_lesson()

###lesson_view.xml

on="1.0" encoding="utf-8"?>
课程教室继承视图
form
my.training.lesson

###classroom_view.xml

教室
form
my.training.classroom
教室列表
tree
my.training.classroom
教室
my.training.classroom
form
form,tree

 

转载于:https://www.cnblogs.com/zcy1103/p/9267948.html

你可能感兴趣的文章
北漂之毕业裁员后的又一波奇遇
查看>>
Python数据分析:pandas常用函数
查看>>
KVO原理分析及使用进阶
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【JS基础】初谈JS现有的数据类型
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
Microsoft发布了Azure Bot Service和LUIS的GA版
查看>>
Google发布Puppeteer 1.0
查看>>
.NET开源现状
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>