相对于7来说,8的api改进了不少,用官方的话来说就是更加面向对象了.

下面探究一下具体的改动.

准备知识:python装饰器的使用 http://blog.csdn.net/thy38/article/details/4471421

在8中,api接口分为traditaional style和record style,traditional style指的就是我们在7中使用的类型,def (cr,uid,ids,context)式的语法.而record style精简了参数,只保留了self和args,形如def (self,args)

 __all__ = [
'Environment',
'Meta', 'guess', 'noguess',
'model', 'multi', 'one',
'cr', 'cr_context', 'cr_uid', 'cr_uid_context',
'cr_uid_id', 'cr_uid_id_context', 'cr_uid_ids', 'cr_uid_ids_context',
'constrains', 'depends', 'onchange', 'returns',
]

由api.py文件中的定义可以看出,可供使用的有这么多属性.接下来我们一一看看他们的用法.

Environment:ORM记录的包装类,封装了cr,uid,context等属性,同时提供了注册访问,记录缓存,管理重新计算的数据结构

Meta:自动装饰traditional style的装饰类,同时实现了对returns装饰的继承

guess:该装饰标识方法既可以被traditional style调用也可被record style方式调用

noguess:阻止所有guess的作用

model:装饰record-style方法中的self为记录集

multi:同model,区别在于model中的相当于traditional-style中的model.method(cr,uid,args,context=context),而multi为model.method(cr,uid,ids,args,context=context)

one:装饰record-style方法中的self为单一实例,被装饰的方法将会在每一条记录中循环调用,返回一个list结果集,如果和@returns一块用了,将返回连接的结果.

cr:装饰traditional-style方法,标识将cr作为一个参数

cr_context:装饰traditional-style方法,标识将cr,context作为参数

cr_uid:装饰traditional-style方法,标识将cr,uid作为参数

cr_uid_context:装饰traditional-style方法,标识将cr,uid,context作为参数

cr_uid_id:装饰traditional-style方法,标识将cr,uid,id作为参数

cr_uid_id_context:装饰traditional-style方法,标识将cr,uid,id,context作为参数

cr_uid_ids:装饰traditional-style方法,标识将cr,uid,ids作为参数

cr_uid_ids_context:装饰traditional-style方法,标识将cr,uid,ids,context作为参数

v7:装饰方法只支持traditional-style api,新api的方法需要重写一个新方法并用v8装饰

v8:装饰方法只支持record-style api,旧api的方法需要重写一个新方法并用v7装饰

constrains:返回一个指定了现实了字段限制的方法的字段依赖的装饰器,每个参数都必须是字段名

depends:返回一个指定了compute方法(或new style function fields)的依赖的装饰器,每个参数必须为以.隔开的字段名组成的字符串

onchagne:返回一个对给出的fields的onchange方法的装饰器,每个参数必须为字段名

returns(model,downgrade=None):返回一个返回参数model的实例的方法的装饰器,参数model:model名或self(当前model),参数downgrade:要从record-style转换成traditional-style的方法

Odoo 8.0 new API 概述的更多相关文章

  1. Odoo 8.0 new API 之constrains装饰

    constrains装饰用于对字段进行限制 应用举例: 定义列: age = fields.Integer(string="age") 方法: @api.constrains('a ...

  2. Odoo 8.0 new API 之model 装饰

    model装饰器的作用是返回一个集合列表 应用举例: 定义columns langs = fields.Selection(string="Lang",selection=&quo ...

  3. Odoo 8.0 new API 之Environment

    """ An environment wraps data for ORM records: - :attr:`cr`, the current database cur ...

  4. Odoo 8.0 new API 之one装饰

    one装饰器的作用是对每一条记录都执行对应的方法,相当于traditional-style中的function 应用举例: 定义的columns now = fields.Datetime(compu ...

  5. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  6. 【转】odoo学习之:API整合文档

    Odoo8.0新API文档 一.新API概述 在8中,api接口分为traditaional style和record style,traditional style指的就是我们在7中使用的类型,de ...

  7. Servlet 3.0 新特性概述

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  8. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  9. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

随机推荐

  1. JSP学习笔记(三):Session和Cookie

    一.JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息.有三种方法来维持客户端与服务器的会话: 1.C ...

  2. java.lang.IllegalArgumentException:Document base ……does not exist or is not a readable directory错误的解决方案

    关于Tomcat的 Document base ……does not exist or is not a readable directory错误 java.lang.IllegalArgumentE ...

  3. [Grunt] Minifying your output with grunt-uglify

    For production we want to use minified javascript to reduce the payload that is sent from the server ...

  4. 用rpm安装软件的常用步骤

    假设软件叫software.rpm 1.安装前,查看是否安装过用 rpm -q software 2.安装时,用 rpm -ivh software.rpm 3.安装后想删除,用 rpm -e sof ...

  5. MVC中cshtml文件中怎样使用ViewBag进行筛选?

    @foreach (PermissionForRoleModel item in ((List<PermissionForRoleModel>)ViewBag.PermissionsFor ...

  6. [Done]ibatis/mybatis: java.lang.NoSuchMethodException

    异常描述: Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating interface cn. ...

  7. (数据库)DBCP连接池配置参数说明

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  8. 通过LDAP验证Active Directory服务

    原文地址:http://www.byywee.com/page/M0/S215/215725.html C#: using System; using System.Collections.Gener ...

  9. 【Linux】centos和ubuntu下php5安装redis2.24扩展

    1.服务器先安装redis-server,这是毋庸置疑的!!! 2.服务器开启redis-server,配置相关参数 3.配置好redis服务器后,再安装php的redis扩展phpredis. 一. ...

  10. 【LeetCode】77. Combinations (2 solutions)

    Combinations Given two integers n and k, return all possible combinations of k numbers out of 1 ...  ...