Odoo 8.0 new API 概述
相对于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 概述的更多相关文章
- Odoo 8.0 new API 之constrains装饰
constrains装饰用于对字段进行限制 应用举例: 定义列: age = fields.Integer(string="age") 方法: @api.constrains('a ...
- Odoo 8.0 new API 之model 装饰
model装饰器的作用是返回一个集合列表 应用举例: 定义columns langs = fields.Selection(string="Lang",selection=&quo ...
- Odoo 8.0 new API 之Environment
""" An environment wraps data for ORM records: - :attr:`cr`, the current database cur ...
- Odoo 8.0 new API 之one装饰
one装饰器的作用是对每一条记录都执行对应的方法,相当于traditional-style中的function 应用举例: 定义的columns now = fields.Datetime(compu ...
- ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录
放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...
- 【转】odoo学习之:API整合文档
Odoo8.0新API文档 一.新API概述 在8中,api接口分为traditaional style和record style,traditional style指的就是我们在7中使用的类型,de ...
- Servlet 3.0 新特性概述
Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...
- Python黑帽编程 2.0 第二章概述
Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...
- 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 ...
随机推荐
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- Mapper 与 Reducer 解析
1 . 旧版 API 的 Mapper/Reducer 解析 Mapper/Reducer 中封装了应用程序的数据处理逻辑.为了简化接口,MapReduce 要求所有存储在底层分布式文件系统上的数据均 ...
- Cognos清除本地高速缓存的利与弊
场景:在开发报表初期,往往我们遇到过这种问题,我们手工修改了DB中的测试数据,但是返回报表看,数据还没有更新,难道是设计出问题了?NO,不要慌,这是因为Cognos为了查询效率设计了高速缓存的选项. ...
- Linux 重启Tomcat脚本
#!/bin/test_restart.sh #Author : Javen #Desc : restart tomcat-test tomcatpath="/home/local/test ...
- 数组根据index拆分和查询下标
private class ArrayTool<T> { /// <summary>查询值在数组中的下标</summary> /// <param name= ...
- 七彩花都手机客户部分测试源码Phonegap+html5
个人建设广州花都论坛,七彩花都(http://www.w30.cn)包含传值回复楼层的jsonp 可以加入我们的QQ群讨论 专注phonepap 核心加载 jsonp返回格式为 jsonp([{&qu ...
- webpack 编译html模板文件
1.项目结构 安装loader: npm i html-loader --save-dev npm i ejs-loader --save-dev 2.模板文件layer.html <div c ...
- javascript forEach方法与jQuery each区别
1.forEach方法 语法: array.forEach(function(currentValue, index, arr), thisValue) 参数: 示例: <!DOCTYPE ht ...
- Ubuntu和windows文件共享问题
ubuntu访问windows共享文件夹(ubuntu桌面系统): 最简单的方法,随便打开一个文件夹,按Ctrl+L,然后地址栏敲smb://xxx.xxx.xxx.xxx(wind ...
- CentOS 6.3下Samba服务器的安装与配置(转)
一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...