`

定义OE的对象-字段和方法(1)

 
阅读更多

OpenERP 对象

所有ERP的数据通过对象进行访问,如:有一个 res.partner 对象 要访问 合作伙伴们(partners),一个账户.发票(account.invoice )的发票相关数据,等等。

请注意每种类型的资源都有一个对象。我们使用 res.partner 对象来管理所有的合作伙伴而不是每个对象自己管理自己。当我们谈到 "面向对象"这个词时指的是高度抽象的对象。

所有对象的方法都有一个参数 “ids”,它指定了本方法必须应用哪个资源(如哪个伙伴),精确的说本参数包含了方法要使用的某种资源的id列表,如有二个伙伴其ID分别为 1, 5 ,我们要调用 res_partner 对象的 send_email 方法, 可这样来调用:

res_partner.send_email(... , [1, 5], ...)

在本文的后面会有跟精确的语法调用说明。

 

下面介绍如何定义一个新的对象,用不同的方式定义对象。对开发者:

  • OpenERP "对象"  在面向对象的程序设计中通常称为类。

  • A OpenERP "资源" 在面向对象程序设计中统称为对象。

在OE中编程,由于使用 python语言这会有一点而混乱  如 python 有对象、实例....。幸运的 OE的资源使用 pythone的 browse 方法可转换为 python 对象。

关于 ORM -模型

 

OE的中心部分为 ORM 即 对象关系映射。OE中,数据模型用 python 的类来描述和加工,用 ORM为开发者提供尽可能无裂纹和透明的关系数据库访问(PostgreSQL), 也提供对象的持久化操作。

OpenERP的对象属性

要python定义一个新的对象,先定义一个 python 类,然后实例化类,类必须 继承 osv 类,osv类在 osv模块中。

按如下方式定义类:

class name_of_the_object(osv.osv):
        _name = 'name.of.the.object'
        _columns = { ... }
        ...
name_of_the_object()

在类中要声明(定义)一些字段,其中 _name 和 _columns 二个字段是必须的,其他可选,osv  中预定义的字段如下:

_auto

定义是否由PostgreSQL自动生成表,当对象从数据库视图读取时候,设置为 False 是很有用的。请参考“从PostgreSQL生成报表”。

  

_columns (required)

对象的字段名。

 

_constraints

对象的约束。

 

_sql_constraints

对象的 SQL 约束。

 

_defaults

对象的某些字段的缺省值定义。

 

_inherit

定义当前对象从 osv 对象继承的名字。

 

_inherits

从 osv 对象类中继承的属性列(多重继承),如:{'name_of_the_parent_object': 'name_of_the_field', ...},缺省值为{}。

 

_log_access

定义是否做写日志,如 True, 则 表中自动加:create_uid(创建者id), create_date(创建日期), write_uid(修改者id), write_date(修改日期)。

 

_name (required)

对象的名称。

 

_order

列名称,排序结果,缺省值为: id 。

 

_order = "name"
_order = "date_order desc"
_rec_name

资源保存名称,缺省值为 'name'。注意:方法 name_get 简单的返回本自动的内容。

 

_sequence

定义产生唯一记录ID 的序列,缺省值:空

 

_sql

当 _auto=Ture 时,在数据库中创建对象(表)之后运行的 SQL 命令。

 

_table

表名称,缺省值为 :  _name 字段定义值,将 点 替换为 下划线 后的字符串作为表名称。

对象继承 _inherit

 

对象可从指定的模块获得继承,要增加、修改一些字段可用继承方式,代码如下:

 

_inherit='object.name'

对象的扩展:

有二个方式来实现本方式继承,二种方式都会导致新类的对象,他具有父类的字段、方法外,增加了自己的字段和方法。注意: _name 值的不同。

示例  1: ( _name == _inherit )

class custom_material(osv.osv):
    _name = 'network.material'
    _inherit = 'network.material'
    _columns = {
        'manuf_warranty': fields.boolean('Manufacturer warranty?'),
    }
    _defaults = {
        'manuf_warranty': lambda *a: False,
    }
    custom_material()

本例中  custom_material 对象 加了 字段 manuf_warranty 到对象 network.material,即:在 本类的新实例中 , manuf_warranty 字段 可通过父类 访问。 在OO 中本继承称 类继承,子类继承了父类的字段和方法。

示例  2: ( _name = 'other.material)

class other_material(osv.osv):
    _name = 'other.material'
    _inherit = 'network.material'
    _columns = {
        'manuf_warranty': fields.boolean('Manufacturer warranty?'),
    }
    _defaults = {
        'manuf_warranty': lambda *a: False,
    }
    other_material()

本例中,other_material 拥有 network.material 的所有字段,同时也定义了一个新的字段 manuf_warranty。这些字段将作为表 other.material 的字段。父类不能访问子类的属性和方法。

本方式继承称为“原型继承”(e.g. Javascript), 因为子类复制了父类的所有字段,子类可充当父类。

 

《---续---》

 

分享到:
评论

相关推荐

    OE6590-10P语音模块+资料包

    1. **用户手册**:详细介绍模块的硬件连接、软件配置以及API接口使用方法。 2. **示例代码**:提供编程示例,帮助快速上手。 3. **驱动程序**:针对不同平台的驱动程序,使模块能在各种系统环境下工作。 4. **开发...

    OE-Mail+Recovery

    1. **OE-Mail Recovery的基本功能**: - **邮件恢复**:OE-Mail Recovery能够扫描损坏或无法访问的.dbx文件,这些文件是Outlook Express存储邮件的标准格式。 - **深度扫描**:该工具深入检查.dbx文件,尝试恢复...

    oe2.10.2-manual-html版本

    1. **BitBake**:这是OpenEmbedded的核心组件,它负责解析食谱(recipes),下载源代码,编译,打包,并处理构建过程中的依赖关系。 2. **Yocto Project**:这是一个基于OpenEmbedded的更大项目,旨在提供一套工具...

    OE-Mail Recovery

    1. OE-Mail Recovery.chm:这是一个帮助文件,以CHM(Compiled HTML Help)格式提供详细的软件使用指南和参考信息,用户可以通过查阅它来了解如何操作软件和解决特定问题。 2. OEMailRecovery.exe:这是OE-Mail ...

    oe-mail recovery

    OE-Mail Recovery是一款专门针对Windows XP操作系统中Outlook Express邮件客户端的修复与恢复工具。这款软件设计的目的是帮助用户在遇到意外情况,如系统崩溃、病毒攻击或者错误操作导致的邮件丢失时,能够尽可能地...

    OE-Mail.Recovery

    OE-Mail Recovery是一款专门针对Outlook Express(OE)邮箱数据恢复的工具。...同时,对于那些依赖电子邮件进行业务沟通的个人和企业,了解并掌握如何使用OE-Mail Recovery这样的工具,是非常有价值的技能。

    nevion 3GHD-OE-SFP 3GHD-EO-SFP光端机模块

    nevion 3GHD-OE-SFP 3GHD-EO-SFP光端机模块

    nevion-3GHD-OE-OE光端机.xlsx

    nevion光端机系列

    OE-Mail.Recovery.rar

    1. **启动软件**:安装并运行OE-Mail Recovery,选择要扫描的DBX文件或OE的存储位置。 2. **扫描**:选择合适的扫描模式,开始扫描过程。 3. **预览邮件**:扫描完成后,软件将列出可恢复的邮件,用户可以逐个预览。...

    oe-1.1.0.rar_oe-1.1.0_oe.h

    "oe-1.1.0"子目录中可能包含了OpenEvidence 1.1.0的所有源代码文件,这包括C++源码、配置文件、库依赖和构建脚本等。源代码的结构一般遵循模块化设计,便于理解和维护。例如,可能会有单独的目录用于存放解析器模块...

    OE-mail-recovery1.77+注册

    最好用的邮件系统崩溃找回邮件的软件,可以把邮件数据库文件转化为eml文件供查看,并可以把邮件另存出来再导入到OE中去

    OE-Mail Recovery v1.7.20.45有注册码

    标题 "OE-Mail Recovery v1.7.20.45有注册码" 指的是一款专门用于恢复和修复Outlook Express(OE)DBX文件的软件工具。这个版本号1.7.20.45表明了软件的更新状态,而"有注册码"意味着用户可以使用提供的注册码来激活...

    AEC - Q102-003:2022 光电多芯片模块 (OE-MCM) - 完整英文电子版(25页).rar

    《AEC - Q102-003:2022 光电多芯片模块 (OE-MCM)》是针对光电多芯片模块设计、制造和测试的一份重要标准文档,由国际汽车电子委员会(AEC)发布。这份25页的完整英文电子版详细阐述了OE-MCM在汽车电子应用中的规范...

    前端开源库-oe-simplebuild

    1. **模块化构建**:oe-simplebuild 支持模块化构建,这意味着它可以处理各种模块化规范,如 CommonJS、ES6 模块等。通过将项目拆分为可重用的模块,可以提高代码的可维护性和复用性。 2. **预处理器支持**:oe-...

    matlab-基于MPC+LQR控制器matlab仿真,用于ARMAX和OE模型-源码

    在本项目中,我们主要探讨的是使用MATLAB进行模型预测控制(MPC)与线性二次调节器(LQR)控制器的设计与仿真,应用于ARMAX(自回归移动平均指数平滑模型)和OE(输出误差)模型。这些是控制系统设计中的重要概念,...

    openeuler-lsb-5.0-1.oe2203.src.rpm

    基于openEuler20.03TLS版本编译openGauss源码时需要的软件包: 1. openeuler-lsb-5.0-1.oe2203.src.rpm 2. git-lfs-linux-arm64-v3.3.0.tar.gz 3. flex-2.5.39.tar.bz2

    OE-Mail Recovery v1.7.20.45 注册版

    1. **启动软件**:运行OE-Mail Recovery v1.7.20.45.exe文件,安装并启动应用程序。 2. **选择受损文件**:在软件界面中,用户需要指定受损的.dbx文件位置。 3. **扫描与分析**:软件将对选定的.dbx文件进行深度扫描...

    OE-Mail Recovery+crack

    1. **启动OE-Mail Recovery**:用户首先需要运行OE-Mail Recovery应用程序,选择要恢复的.dbx文件。 2. **扫描与分析**:程序会对选定的.dbx文件进行深度扫描,查找可能仍然可读的电子邮件数据。 3. **预览邮件**:...

Global site tag (gtag.js) - Google Analytics