02 创建新模块(学Odoo,就得Do )

首先要说明的是自定义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,需要卸载后再安装一次。

下一篇,我们将制作主菜单和一个子菜单,这样我们可以点击菜单项,维护我们的病人信息。

发布了14 篇原创文章 · 获赞 0 · 访问量 6791

猜你喜欢

转载自blog.csdn.net/xmsea/article/details/105652465
02