跳至内容

Odoo(OpenERP)对象字段定义的详解

一、字段类型概述

OpenERP 对象支持多种字段类型,包括基础类型、复杂类型和关系类型。

基础类型

  • boolean:布尔型(true, false)
  • integer:整数
  • float:浮点型,如 'rate' : fields.float('Relative Change rate', digits=(12,6)),digits 定义整数部分和小数部分的位数。
  • char:字符型,size 属性定义字符串长度。
  • text:文本型,没有长度限制。
  • date:日期型
  • datetime:日期时间型
  • binary:二进制型

复杂类型

  • function:函数型,该类型的字段值由函数计算而得,不存储在数据表中。
  • related:关联字段,表示本字段引用关联表中的某字段。
  • selection:下拉框字段,允许用户选择值。

关系类型

  • one2one:一对一关系(在 V5.0 以后的版本中不建议使用,用 many2one 替代)
  • many2one:多对一关系
  • one2many:一对多关系
  • many2many:多对多关系
  • reference:引用型

二、字段类型详解

function(函数型)

函数型字段的值由函数计算得出,不存储在数据表中。定义格式如下:

fields.function(fnct, arg=None, fnct_inv=None, fnct_inv_arg=None, type='float', fnct_search=None, obj=None, method=False, store=True)    
  • type:函数返回值的类型。
  • method:为 True 表示本字段的函数是对象的一个方法,为 False 表示是全局函数。
  • fnct:计算字段值的函数或方法。
  • fnct_inv:用于写本字段的函数或方法。
  • fnct_search:定义该字段的搜索行为。
  • store:是否在数据库中存储本字段值。

selection(下拉框型)

定义一个下拉框字段,允许用户选择值。例如:

'state': fields.selection((('n','Unconfirmed'), ('c','Confirmed')), 'State', required=True)    

关系类型字段

one2one(一对一关系)

格式为:`fields.one2one(关联对象Name, 字段显示名, ... )`。在 V5.0 以后的版本中不建议使用,用 many2one 替代。

many2one(多对一关系)

格式为:`fields.many2one(关联对象Name, 字段显示名, ... )`。可选参数 `ondelete` 可选值为 "cascade" 和 "null"。

one2many(一对多关系)

格式为:`fields.one2many(关联对象Name, 关联字段, 字段显示名, ... )`。例如:

'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts')    

many2many(多对多关系)

'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories')    

reference(引用型)

格式为:`fields.reference(字段名, selection, size, ... )`。例如:

'ref': fields.reference('Document Ref 2', selection=_links_get, size=128)    

related(关联字段)

表示本字段引用关联表中的某字段。例如:

'city': fields.related('address', 'city', type='char', string='City')    

property(属性字段)

通过 `ir.property` 间接多对一关联到别的对象。例如:

'property_product_pricelist': fields.property('product.pricelist', type='many2one', relation='product.pricelist', string="Sale Pricelist", method=True, view_load=True, group_name="Pricelists Properties")    

三、字段定义参数

字段定义中可用的参数有:

  • change_default:别的字段的缺省值是否可依赖于本字段。
  • readonly:本字段是否只读。
  • required:本字段是否必须。
  • states:定义特定 state 才生效的属性。
  • string:字段显示名。
  • translate:本字段值是否可翻译。
  • size:字段长度。
  • priority:优先级。
  • domain:域条件。
  • invisible:本字段是否可见。
  • selection:用于 reference 字段类型。

四、对象的预定义方法

每个 OpenERP 对象都有一些预定义方法,这些方法定义在基类 `osv.osv` 中。包括:

  • 基本方法:`create`, `search`, `read`, `browse`, `write`, `unlink`
  • 缺省值存取方法:`default_get`, `default_set`
  • 字段和视图操作方法:`fields_get`, `distinct_field_get`, `fields_view_get`
  • 记录名字存取方法:`name_get`, `name_search`

这些方法用于对象的基本操作,如创建、查询、读取、更新和删除记录,以及获取字段和视图信息等。

Odoo(OpenERP)对象字段定义的详解
6776, Administrator 2011年9月25日
标签
存档