`
xiaolin0199
  • 浏览: 573080 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

OpenERP预定义对象方法

 
阅读更多

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

基本方法:create, search, read, browse, write, unlink。
    def create(self, cr, uid, vals, context={})

#create方法:在数据表中插入一条记录(或曰新建一个对象的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)

#search方法:查询符合条件的记录。
格式: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方法:返回记录的指定字段值列表。
格式:def read(self, cr, uid, ids, fields=None, context={})
#参数说明:
· ids: 待读取的记录的id列表,形如[1,3,5,...]
· fields (optionnal): 待读取的字段值,不指定的话,读取所有字段。
· context (optional): 参见create方法。

返回值:返回读取结果的字典列表,形如 [{'name_of_the_field': value, ...}, ...]

 
    def browse(self, cr, uid, select, offset=0, limit=2000)

   

#browse方法:浏览对象及其关联对象。从数据库中读取指定的记录,并生成对象返回。和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)
#参数说明:
select: 待返回的对象id,可以是一个id,也可以是一个id 列表。
· offset (optional): 参见search方法。
· limit (optional): 参见search方法。
返回值:返回对象或对象列表。
注意:本方法只能在Server上使用,由于效率等原因,不支持rpc等远程调用

 
    def write(self, cr, uid, ids, vals, context={})

   

#write方法:保存一个或几个记录的一个或几个字段。
格式:def write(self, cr, uid, ids, vals, context={})
#参数说明:
· ids: 待修改的记录的id列表。
· vals: 待保存的字段新值,是一个字典,形如: {'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)

   

#unlink方法:删除一个或几个记录。
格式:def unlink(self, cr, uid, ids)
#参数说明:
· ids: 待删除的记录的id列表。
返回值:如果没有异常,返回True,否则抛出异常。

 

 

缺省值存取方法:default_get, default_set。
    def default_get(self, cr, uid, fields, form=None, reference=None)

   

#default_get方法:复位一个或多个字段的缺省值。
格式: def default_get(self, cr, uid, fields, form=None, reference=None)
#参数说明:
• fields: 希望复位缺省值的字段列表。
• form (optional): 目前似乎未用(5.06版)。
• reference (optional): 目前似乎未用(5.06版)。
返回值: 字段缺省值,是一个字典,形如: {'field_name': value, ... }。

#举例:self.pool.get('hr.analytic.timesheet').default_get(cr, uid, ['product_id','product_uom_id'])

 
    def default_set(self, cr, uid, field, value, for_user=False)

   

#default_set方法:重置字段的缺省值。
格式: def default_set(self, cr, uid, field, value, for_user=False)
#参数说明:
• field: 待修改缺省值的字段。
• value: 新的缺省值。
• for_user (optional): 修改是否只对当前用户有效,还是对所有用户有效,缺省值是对所有用户有效。
返回值: True

 

特殊字段操作方法:perm_read, perm_write
    def perm_read(self, cr, uid, ids)

    
    def perm_read(self, cr, user, ids, context=None, details=True):
        """
        Returns some metadata about the given records.

        :param details: if True, \*_uid fields are replaced with the name of the user
        :return: list of ownership dictionaries for each requested record
        :rtype: list of dictionaries with the following keys:

                    * id: object id
                    * create_uid: user who created the record
                    * create_date: date when the record was created
                    * write_uid: last user who changed the record
                    * write_date: date of the last change to the record
                    * xmlid: XML ID to use to refer to this record (if there is one), in format ``module.name``
        """
......................

 
    def perm_write(self, cr, uid, ids, fields)

   

    def perm_write(self, cr, user, ids, fields, context=None):
        raise NotImplementedError(_('This method does not exist anymore'))

 

字段(fields)和视图(views)操作方法:fields_get, distinct_field_get, fields_view_get
    def fields_get(self, cr, uid, fields = None, context={})

    def fields_get(self, cr, user, allfields=None, context=None, write_access=True):
        """ Return the definition of each field.

        The returned value is a dictionary (indiced by field name) of
        dictionaries. The _inherits'd fields are included. The string, help,
        and selection (if present) attributes are translated.

        :param cr: database cursor
        :param user: current user id
        :param allfields: list of fields
        :param context: context arguments, like lang, time zone
        :return: dictionary of field dictionaries, each one describing a field of the business object
        :raise AccessError: * if user has no create/write rights on the requested object

        """

 
    def fields_view_get(self, cr, uid, view_id=None, view_type='form',context={})

   

    def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
        """
        Get the detailed composition of the requested view like fields, model, view architecture

        :param cr: database cursor
        :param user: current user id
        :param view_id: id of the view or None
        :param view_type: type of the view to return if view_id is None ('form', tree', ...)
        :param context: context arguments, like lang, time zone
        :param toolbar: true to include contextual actions
        :param submenu: deprecated
        :return: dictionary describing the composition of the requested view (including inherited views and extensions)
        :raise AttributeError:
                            * if the inherited view has unknown position to work with other than 'before', 'after', 'inside', 'replace'
                            * if some tag other than 'position' is found in parent view
        :raise Invalid ArchitectureError: if there is view type other than form, tree, calendar, search etc defined on the structure

        """

 
    def distinct_field_get(self, cr, uid, field, value, args=[], offset=0,limit=2000)

   

    def distinct_field_get(self, cr, uid, field, value, args=None, offset=0, limit=None):
        if not args:
            args = []
        if field in self._inherit_fields:
            return self.pool.get(self._inherit_fields[field][0]).distinct_field_get(cr, uid, field, value, args, offset, limit)
        else:
            return self._columns[field].search(cr, self, args, field, value, offset, limit, uid)

 

记录名字存取方法:name_get, name_search
    def name_get(self, cr, uid, ids, context={})

   

    def name_get(self, cr, user, ids, context=None):
        """Returns the preferred display value (text representation) for the records with the
           given ``ids``. By default this will be the value of the ``name`` column, unless
           the model implements a custom behavior.
           Can sometimes be seen as the inverse function of :meth:`~.name_search`, but it is not
           guaranteed to be.

           :rtype: list(tuple)
           :return: list of pairs ``(id,text_repr)`` for all records with the given ``ids``.
        """

 
    def name_search(self, cr, uid, name='', args=[], operator='ilike',context={})

   

    def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100):
        """Search for records that have a display name matching the given ``name`` pattern if compared
           with the given ``operator``, while also matching the optional search domain (``args``).
           This is used for example to provide suggestions based on a partial value for a relational
           field.
           Sometimes be seen as the inverse function of :meth:`~.name_get`, but it is not
           guaranteed to be.

           This method is equivalent to calling :meth:`~.search` with a search domain based on ``name``
           and then :meth:`~.name_get` on the result of the search.

           :param list args: optional search domain (see :meth:`~.search` for syntax),
                             specifying further restrictions
           :param str operator: domain operator for matching the ``name`` pattern, such as ``'like'``
                                or ``'='``.
           :param int limit: optional max number of records to return
           :rtype: list
           :return: list of pairs ``(id,text_repr)`` for all matching records.
        """

 

 

分享到:
评论
1 楼 meylovezn 2015-12-28  
  很不错的分享呢\(^o^)/~

相关推荐

    openerp+nginx配置方法

    openerp+nginx配置方法, 非常详细的资料,可以参考使用。

    openerp部署训练文档

    2.5 预定义的osv.Model属性,适用于商业对象 2.6 特殊/保留字段名 2.7 动作和菜单 知识点三:构建视图:基础 3.1 通用视图声明 3.2 树形视图 3.3 表单视图 知识点四:对象间的关系 4.1 关系字段 知识点五:继承 ...

    openERP 7.0使用手册 第三章 OpenERP快速入门

    OpenERP 7.0 使用手册第三章 OpenERP 快速入门 OpenERP 是一种开源的企业资源计划(ERP)软件,它可以帮助企业管理其业务操作,包括销售、采购、库存、财务等。下面是 OpenERP 7.0 使用手册第三章 OpenERP 快速入门...

    OpenERP开发基础教程

    OpenERP应用和开发基础,主要讲述OPENERP的系统架构以及基本知识,还有开发的一些基本语法等,非常适合入门者使用。

    openerp.zip_openERP

    2. 数据模型:OpenERP通过定义对象来构建数据模型,每个对象代表一类实体,如客户、产品等。对象包含字段,字段定义了对象的数据结构。 3. 视图:视图是用户界面的表现形式,包括树状视图、列表视图、表单视图等,...

    openerp教程

    openerp教程

    openERP 7.0使用手册 第七章 生产基本操作

    《OpenERP 7.0使用手册 - 生产基本操作》 在OpenERP 7.0中,生产管理涉及多种操作,主要包括面向不同生产计划方式的支持、物料清单(Bill of Materials, BoM)的管理和车间作业的管理。这些功能帮助企业有效地进行...

    OpenERP应用和开发基础文档及相关资源

    OpenERP应用和开发基础 OpenERP应用和开发基础(第一章).pdf OpenERP应用和开发基础(第二章).pdf OpenERP应用和开发基础(第三章).pdf OpenERP应用和开发基础(第四章).pdf OpenERP应用和开发基础(第五章).pdf OpenERP...

    openerp应用和开发

    OpenERP应用和开发基础,随着openerp的发展,越来越多的中小企业开始应用此erp系统,免费开源是最大的特点

    OpenERP Installing Ubuntu9.04

    OpenERP Installing Ubuntu9.04

    openerp 免费下载

    OpenERP是一款优秀的开源ERP软件。开源是说,软件完全公开,您不仅可以自由下载软件,还可以自由下载软件的所有源代码;软件本身没有任何秘密, 没有任何用户数限制,没有任何收费!优秀是说,软件功能丰富,品质...

    OpenERP 文档

    - 可以在递延对象上绑定回调函数来处理异步操作的结果。 #### 五、QWeb 模板引擎 **5.1 QWeb 模板引擎** - **QWeb**: - QWeb 是 OpenERP Web 中使用的模板引擎。 - 它允许开发者使用简单易懂的语法来定义 ...

    oecn_base_fonts openerp中文报表解决方法

    网上找了很久的,并不断测试失败总结后的结果,现将openerp6.1和openerp7的中文报表对应模块放出。 trunk.2.1.1是oe7的

    OpenERP.rar_openERP

    这个压缩包文件“OpenERP.rar_openERP”包含了关于OpenERP的应用和开发基础的详细资料,主要以“OpenERP应用和开发基础_091224.pdf”这本书的形式呈现。 首先,我们要理解OpenERP的核心概念。它是一个模块化的系统...

    OpenERP操作指南

    OpenERP操作指南

    使用虚拟机VM运行Linux版OpenERP

    OpenERP、Linux版、虚拟机VM、如何使用虚拟机VM运行Linux版OpenERP

    openerp 7.0 allinone part2

    openerp 7.0 allinone 安装包part1

    OpenERP应用和开发基础

    OpenERP应用和开发基础OpenERP应用和开发基础

    OpenERP_Technical开发教程

    OpenERP提供了完整的工具箱,包括集成的对象关系映射(ORM)支持、模板驱动的模型视图控制器(MVC)接口、报表生成系统、自动化国际化等特性。 #### Python与RAD框架 Python是一种高级动态编程语言,非常适合快速...

    OpenERP_6.1_web框架指南

    OpenERP_6.1_web框架指南

Global site tag (gtag.js) - Google Analytics