每个 OpenERP 的对象都有一些预定义方法,这些方法定义在基类 osv.osv 中。这些预定义方法 有:
def create(self, cr, uid, vals, context={})
def search(self, cr, uid, args, offset=0, limit=2000)
def read(self, cr, uid, ids, fields=None, context={})
def browse(self, cr, uid, select, offset=0, limit=2000)
def write(self, cr, uid, ids, vals, context={})
def unlink(self, cr, uid, ids)
def default_get(self, cr, uid, fields, form=None, reference=None) def
default_set(self, cr, uid, field, value, for_user=False)
def perm_read(self, cr, uid, ids) def perm_write(self, cr, uid, ids, fields)
def fields_get(self, cr, uid, fields = None, context={})
def fields_view_get(self, cr, uid, view_id=None, view_type='form',context={})
def distinct_field_get(self, cr, uid, field, value, args=[], offset=0,limit=2000)
def name_get(self, cr, uid, ids, context={})
def name_search(self, cr, uid, name='', args=[], operator='ilike',context={})
def name_get(self, cr, uid, ids, context={})
def name_search(self, cr, uid, name=, args=[], operator=’ilike’, context={})
在数据表中插入一条记录(或曰新建一个对象的 resource)。
格式:
def create(self, cr, uid, vals, context={})
参数说明:
vals
: 待新建记录的字段值,是一个字典,形如: {'name_of_the_field':value, ...}
context (optional)
: OpenERP 几乎所有的方法都带有参数 context,context 是一个字典,存放一些上 下文值,例如当前用户的信息,包括语言、角色等。
context 可以塞入任何值,在 action 定义中,有 一个 context 属性,在界面定义时,可以在该属性中放入任何值,context 的最初值通常 来自该属性值。 返回值:新建记录的 id。
举例:
id = pooler.get_pool(cr.dbname).get('res.partner.event').create(cr, uid,{'name': 'Email sent through mass mailing','partner_id': partner.id,'description': 'The Description for Partner Event'})
查询符合条件的记录。
格式:
def search(self, cr, uid, args, offset=0, limit=2000)
参数说明:
args: 包含检索条件的 tuples 列表,格式为: [('name_of_the_field', 'operator', value), ...]。 可用的 operators 有:
=, >, <, <=, >= in
like, ilike child_of
更详细说明,参考《OpenERP 应用和开发基础》中的“域条件”有关章节。
offset (optional): 偏移记录数,表示不返回检索结果的前 offset 条。
limit (optional): 返回结果的最大记录数。 返回值:符合条件的记录的 id list。
返回记录的指定字段值列表。
格式:
def read(self, cr, uid, ids, fields=None, context={})
参数说明:
浏览对象及其关联对象。从数据库中读取指定的记录,并生成对象返回。和read
等方 法不同,本方法不是返回简单的记录,而是返回对象。
返回的对象可 以直接使用"."存取对象的字段和 方法,形如"object.name_of_the_field",关联字段(many2one 等),也可以通过关联字 段直接访问“相 邻”对象。例如:
addr_obj = self.pool.get('res.partner.address').browse(cr, uid, contact_id)
nom = addr_obj.name
compte = addr_obj.partner_id.bank
这段代码先从对象池中取得对象res.partner.address
,调用它的方法 browse,取得 id=contact_id 的 对象,然后直接用"."取得"name"字段以及关联对象 patner 的银行(addr_obj.partner_id.bank)。
格式:
def browse(self, cr, uid, select, offset=0, limit=2000)
参数说明:
offset (optional): 参见 search 方法。
limit (optional): 参见 search 方法。
返回值:返回对象或对象列表。 注意:本方法只能在 Server 上使用,由于效率等原因,不支持 rpc 等远程调用。
保存一个或几个记录的一个或几个字段。 格式:
def write(self, cr, uid, ids, vals, context={})
参数说明:
{'name_of_the_field': value, ...}。
context (optional): 参见 create 方法。
返回值:如果没有异常,返回 True,否则抛出异常。
举例:
self.pool.get('sale.order').write(cr, uid, ids, {'state':'cancel'})
删除一个或几个记录。
格式:
def unlink(self, cr, uid, ids)
参数说明:
复位一个或多个字段的缺省值。
格式:
def default_get(self, cr, uid, fields, form=None, reference=None)
参数说明:
self.pool.get('hr.analytic.timesheet').default_get(cr, uid, ['product_id','product_uom_id'])
def default_get(self, cr, uid, fields, context=None):
data = super(curent_object, self).default_get(cr, uid, fields, context=context)
data['field']=value
return data
重置字段的缺省值。
格式:
def default_set(self, cr, uid, field, value, for_user=False)
参数说明: