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 概述

时间: 2024-10-13 23:23:18

Odoo 8.0 new API 概述的相关文章

Odoo 8.0 new API 之constrains装饰

constrains装饰用于对字段进行限制 应用举例: 定义列: age = fields.Integer(string="age") 方法: @api.constrains('age') def _check_age(self): if self.age<16: raise ValueError(_('Age must be older than 16')) Odoo 8.0 new API 之constrains装饰

Odoo 8.0 new API 之one装饰

one装饰器的作用是对每一条记录都执行对应的方法,相当于traditional-style中的function 应用举例: 定义的columns now = fields.Datetime(compute='_compute_now') 方法: @one def _compute_now(self): self.now = fields.Datetime.now() Odoo 8.0 new API 之one装饰

Odoo 8.0 new API 之model 装饰

model装饰器的作用是返回一个集合列表 应用举例: 定义columns langs = fields.Selection(string="Lang",selection="_get_lang") 方法定义: @api.model def _get_lang(self): langs = self.env['res.lang'].search([]) return [(lang.code,lang.name) for lang in langs] Odoo 8.0

Odoo 8.0 new API 之Environment

""" An environment wraps data for ORM records: - :attr:`cr`, the current database cursor; - :attr:`uid`, the current user id; - :attr:`context`, the current context dictionary. It also provides access to the registry, a cache for records, a

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

放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 诸君,我喜欢嫩的--呸呸呸 诸君,我喜欢3D咋了?新事物会替代旧事物不是~ ArcGIS API for JavaScript 4.2概述 AJS 4.2,即ArcGIS API for JavaScript 4.2,是美国ESRI公司针对WebGIS市场推出的.利用JavaScript和Dojo开发的一款产品,它在2016年12月发布.而AJS 4.0 beta则在一年前就发布了. 关于AJS3和AJS4选择的问题,

Servlet 3.0 新特性概述

Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署.其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声: 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程.在接收到请求之后,Servlet 线

装载器API概述

装载器API概述 在使用装载器时,会涉及很多类和接口们,我们在下表中对它们总结一下: Class/Interface 说明 LoaderManager 一个抽像类,关联到一个Activity或Fragment,管理一个或多个装载器的实例.这帮助一个应用管理那些与Activity或Fragment的生命周期相关的长时间运行的的操作.最常见的方式是与一个CursorLoader一起使用,然而应用是可以随便写它们自己的装载器以加载其它类型的数据. 每个activity或fragment只有一个Load

OAuth2.0学习(5-4)新浪开放平台-微博API-使用OAuth2.0调用API

使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/statuses/public_timeline.json?access_token=abcd 2.在header里传递,形式为在header里添加 Authorization:OAuth2空格abcd,这里的abcd假定为Access Token的值,其它接口参数正常传递即可. 注:所有的微博开放

配置ubuntu 14.04.3 LTS odoo 9.0开发环境

使用VMware Fusion 8.0.1创建ubuntu 64bit虚拟机:使用ubuntu-14.04.3-desktop-amd64.iso镜像缺省安装ubuntu,用户名odoo,密码123456 安装open vm tools:使用odoo/123456登录ubuntu桌面,打开Terminal窗口,执行下述命令安装open vm tools:sudo apt-get install open-vm-toolbox 安装ubuntu最新更新: sudo apt-get update &