【odoo 10.0】一个自定义模块模板
2017-02-25 本文已影响743人
battle_
参考文档
创建自定义模块
- 首先自定义模块可以放到odoo自己的addons文件夹中,也可以重新创建文件夹,放入自己开发的模块。
如果自建文件夹,需要在启动时指定相应的文件夹,文件夹之间用,
间隔。 - odoo提供了自动创建自定义模块初始模板的代码
odoo-bin scaffold <module name> <where to put it>
使用该代码可以创建一个初始模板
模板如下:
初始文件结构其中外部的manifest.py是该模块的描述文件,可以定义模块的基本信息。
- models文件夹,为模块的持久化对象映射。
安装模块之后,数据库会自动根据该层进行建表。
对象类继承于models.Model,需要重写一些重要的继承属性,比如_name,该属性是以后使用此持久化对象的标志。相当于id。_table为自动在数据库创建的名字定义。
然后可以定义自己的属性,并制定相应类型,该属性就是以后数据库中表的字段。
添加一个对象:
from odoo import models,fields,api,_
class project(models.Model):
_name = 'demo.project'
_table = 'demo_project'
no = fields.Char(string=u'项目编号', required=True)
name = fields.Char(string=u'项目名称', required=True)
startDate = fields.Date(string=u'开始时间', required=True)
fields有以下属性可用
fields
每个对象中都有保留字段用来获取一些需要的信息,这些字段不能覆盖重写
保留字段
- demo文件夹,为存放示例数据,通过xml配置数据,加载模块可以自动录入数据库。
模型数据通过xml文件进行配置,xml内实例数据存放于<data>标签内,每个实例通过record标签声明
<odoo>
<data>
<record model="{model name}" id="{record identifier}">
<field name="{a field name}">{a value}</field>
</record>
</data>
</odoo>
model绑定数据库映射对象的_name
id是[external identifier]它允许不知道数据库标识的情况下引用该条记录
field标签的name属性,其值为数据库映射对象的变量名,也就是数据库表单的字段名,标签内为字段赋值。
提示:demo内xml定义的数据记录,若要生效,需要在 __ manifest__.py文件中声明,可以声明在data属性内(always loaded,随模块加载而加载数据) ,也可以声明在demo属性内 (only loaded in demonstration mode,只有勾选需要demo数据的情况下才加载数据)。
controllers文件夹,为url路由定制。
security文件夹,为权限相关。
views文件夹,为视图相关。
初步来看odoo也是一个MVC模式的结构。该自动创建的模板中都含有注释化的示例代码,可以初步了解模块内的基本写法。
启动服务器,在网页中可以搜索该模块名字,找到模块进行安装。