zoukankan      html  css  js  c++  java
  • 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的方法

  • 相关阅读:
    iOS-禁止scrollview垂直方向滚动,只允许水平方向滚动;或只允许垂直方向滚动
    MongoDB安装
    Vue运用
    egg-middleware 中间件
    如何判断扫码的客户端是微信还是支付宝
    node 短信接口的调用
    Mui 长按保存图片
    egg-sequelize --- nodejs
    egg-mongoose --- nodejs
    Mongoose 基本用法
  • 原文地址:https://www.cnblogs.com/kfx2007/p/3894297.html
Copyright © 2011-2022 走看看