zoukankan      html  css  js  c++  java
  • Odoo新API

    原文地址:http://www.cnblogs.com/ygj0930/p/7145594.html

    新API的装饰器主要有以下几种:

    model,multi,one,constrains,depends,onchange,returns

    一、one

    one的用法主要用于self为单一集合的情况,与之相对应的是multi。被one装饰的方法会返回一个list,其值是:[None]

    二、multi

    与one相对应,one要求self是单一记录,而multi则要求self是多个记录的合集。因此,常使用for—in语句遍历self。

    三、model

    model要求self是一个记录集,返回一个集合列表。

    四、contrains

    python约束。

    五、depends

    depends 主要用于compute方法,depends就是用来标该方法依赖于哪些字段的。

    六、onchange

    onchange的使用方法非常简单,就是当字段发生改变时,触发绑定的函数。

    七、returns

    returns的用法主要是用来指定返回值的格式,它接受三个参数,第一个为返回值的model,第二个为向下兼容的method,第三个为向上兼容的method

     

    新API中用于特殊方法的有:

    cr,cr_context,cr_uid,cr_uid_context,cr_uid_id,cr_uid_id_contet,cr_uid_ids,cr_uid_ids_context

    复制代码
    __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',  
      ]   
    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的方法  
    清除缓存可以使用environment对象的invalidate_all()方法进行  
    复制代码
    复制代码
    environment类提供了对ORM对象的封装,同时提供了对注册类的访问,记录集的缓存,以及管理重计算的数据结构。对于继承Model类来说可以直接通过self.env对environment进行操作。  
    属性列表:  
    1.user:返回当前用户  
        self.env.user  
    2.lang:返回当前语言代码  
        self.env.lang  
    3.in_draft:返回是否处于草稿状态  
        self.env.in_draft  
    4.in_onchange:返回是否处于on_change草稿模式  
        self.env.in_onchange  
    另外还有cr,registery,cache,prefetch,computed,dirty,todo,mode,all  
    复制代码
    1.利用env[model]获取类对象,调用对象方法  
        self.env['ir.model'].search([('state','!=','manual')])  
    2.利用cr执行sql语句  
        self.env.cr.execute(query,(value,))  
  • 相关阅读:
    兼容ie8 rgba()用法 滤镜filter的用法
    解決BufferedReader读取UTF-8文件中文乱码
    基于JavaScript实现表单密码的隐藏和显示出来
    Java多线程学习(转载)
    使用java 程序创建格式为utf-8文件的方法(写入和读取json文件)
    java获取classpath文件路径空格转变成了转义字符%20的问题
    java中Class.getResource用法
    事务传播行为和特性
    事务隔离级别
    使用Condition循环依次打印123
  • 原文地址:https://www.cnblogs.com/qjtjh/p/8269577.html
Copyright © 2011-2022 走看看