美文网首页
【odoo 10.0】一个自定义模块模板

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

作者: battle_ | 来源:发表于2017-02-25 22:05 被阅读743次

    参考文档

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

    创建自定义模块

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

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

    相关文章

      网友评论

          本文标题:【odoo 10.0】一个自定义模块模板

          本文链接:https://www.haomeiwen.com/subject/pgcnwttx.html