首先要说明的是自定义Odoo模块需要遵守Odoo对模块子目录的约定,这样才上路,才专业,先上一张图,说明Odoo的模块目录结构:
其次,对于__manifest__.py文件,我们重点关注一下:
可是,对于推动世界进步的懒人来说,Odoo 提供了一种机制来帮助建立一个新的模块, 如果你用Odoo安装包在windows版本下完成了,有一个odoo-bin文件 通过指令 scaffold(脚手架)来创建一个空模块:
odoo-bin scaffold <module name> <where to put it>,范例如下
odoo-bin scaffold Mymodule D:\Jerry One Drive\OneDrive\MyAddon
Odoo会在指定目录下生成标准程序目录和被注释的样例代码
因为我们要一步一步展示的需要,所以我们手工来创建这些目录和文件:
om_hospital
--models
--security
--static
--views
--__init__.py
--__manifest__.py
然后是编辑__manifest__.py,为了给大家省点事情,代码粘贴如下:
# -*- coding: utf-8 -*-
{
'name' :"Hospital Management",
'summary' :"""Optimize Hospital Work""",
'description' :"""
Optimize hospital work:
- Evaluate review and approval
- Linked procedure
- Key parameter impact to approval efficiency
""",
'author' :"Red Hill",
'website' :"http://www.yourcompany.com" ,
'category' :'Extra Work' ,
'version' :'0.1' ,
'depends' : ['base'],
'data' : [
],
'demo' : [
],
'installable':True,
'application':True,
'auto_install':False,
}
然后我们在目录models里面添加一下patient.py,是描述病人信息的类。
因此,我们要在根目录的中包含patient这个类
# -*- coding: utf-8 -*-
from .models import patient
接着,我们在patient.py文件中实现patient这个类
# -*- coding: utf-8 -*-
from odooimport models, fields
class HospitalPatient(models.Model):
_name ='hospital.patient'
_description ='Patient Record'
patient_name = fields.Char(string='Name',required=True); # 必填字段
patient_age = fields.Integer(string='Age');
notes = fields.Text(string='Notes');
image = fields.Binary(string='Image');
到目前为止,一切都还非常简单,我们需要在static目录下建立description目录,并放进一个名称为icon.png的文件(文件尺寸500px * 500px就可以)
准备工作做完了,接下来我们要让Odoo系统识别出我们这个模块,步骤如下:
1. 运行系统,在00篇已经讲过,这里不再重复
2. 进入开发者模式
3.更新App列表
4.查找出新模块,并安装
5.检查是否安装成功(因为我们没有做菜单和表格,所以只是检查patient类是否注入系统)
在这里,我们看到hospital.patient已经注射到Odoo里面去了。
注意:如果因为代码键入手误,导致首次安装失败,然后再次安装成功的,如果Odoo里面查不到Model,需要卸载后再安装一次。
下一篇,我们将制作主菜单和一个子菜单,这样我们可以点击菜单项,维护我们的病人信息。