OpenERP Object Attributes

Objects Introduction

To define a new object, you have to define a new Python class then instantiate it. This class must inherit from the osv class in the osv module.

Object definition

对象定义的前几行如下::

  1. class name_of_the_object(osv.osv):
  2. _name = 'name.of.the.object'
  3. _columns = { ... }
  4. ...
  5. name_of_the_object()

一个对象可以通过一些字段来定义,而这些字段在类中已经预定义了名称。其中有两个是必须的(_name和_columns),其他都是可选的。预定义的字段是:

Predefined fields

_auto

是否自动创建对象对应的Table,如果OpenERP的对象从PostgreSQL views中产生时,将_auto设为False比较好。想要知道更多的细节可以查看“Reporting From PostgreSQL Views”。

_columns (required)

对象字段,可在field章节了解更多。

_constraints

定义对象上的约束,可在“constraints”章节了解更多。

_sql_constraints

定义对象中SQL约束,可在“SQL constraints”章节了解更多。

_defaults

定义一些字段的缺省值,可在“default value”章节了解更多。

_inherit

当前对象继承自哪里,可在 object inheritance section (first form) 了解更多。

_inherits

当前对象继承的对象列表,这个列表必须是下面的形式:{‘name_of_the_parent_object’: ‘name_of_the_field’, …}。可在“object inheritance section”了解更多。缺省值是:{}

_log_access

定义对资源的写访问是否应写入日志,如果是true,那将自动在对应的数据表中增加create_uid, create_date, write_uid, write_date四个字段,缺省值为True,即字段增加。这四个字段分布记录record的创建人,创建日期,修改人,修改日期。这四个字段值可以用对象的方法(perm_read)读取。

_name (required)

定义对象的名称,缺省值为None。

_order

定义search和read方法的结果记录排序规则。

缺省值:“id”

例如:

  1. _order = "name"
  2. _order = "date_order desc"

_rec_name

标识每个已被存储的资源的名称字段。缺省值是:“name”,缺省情况(name_get没被重载的话)方法name_get()返回本字段值。

_sequence

数据库表的id字段的序列采集器,缺省值为: None。

_sql

SQL代码执行在对象的创建之上,意思就是说在表格创建后代码执行。

_table

数据库表名,缺省值是和_name一样,只是将”.”替换成”_“。