【odoo 10.0】一个自定义模块模板

参考文档

https://www.odoo.com/documentation/10.0/index.html

创建自定义模块

  • 首先自定义模块可以放到odoo自己的addons文件夹中,也可以重新创建文件夹,放入自己开发的模块。
    如果自建文件夹,需要在启动时指定相应的文件夹,文件夹之间用,间隔。
  • odoo提供了自动创建自定义模块初始模板的代码
    odoo-bin scaffold
    使用该代码可以创建一个初始模板
自动创建模块模板

模板如下:

【odoo 10.0】一个自定义模块模板_第1张图片
初始文件结构

其中外部的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有以下属性可用


【odoo 10.0】一个自定义模块模板_第2张图片
fields

每个对象中都有保留字段用来获取一些需要的信息,这些字段不能覆盖重写


【odoo 10.0】一个自定义模块模板_第3张图片
保留字段
  • demo文件夹,为存放示例数据,通过xml配置数据,加载模块可以自动录入数据库。
    模型数据通过xml文件进行配置,xml内实例数据存放于标签内,每个实例通过record标签声明

    
        
            {a value}
        
    

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模式的结构。该自动创建的模板中都含有注释化的示例代码,可以初步了解模块内的基本写法。

启动服务器,在网页中可以搜索该模块名字,找到模块进行安装。

你可能感兴趣的:(【odoo 10.0】一个自定义模块模板)