http://blog.csdn.net/qq_18863573/article/details/51114893

1.one装饰器详解

odoo新API中定义方式:

date=fields.Date(string="date",compute="_get_date")  

@api.one
def _get_date(self):
self.date=fields.Date.today()

其实说的易懂些,等同于旧API的function 类型的简化版,但是需要特别注意到是one装饰类无返回值。

2. multi装饰类详解

odoo新API中定义方式:

1.本人一般将multi装饰类用于tree试图模式的报表中,如下图实例:

@api.multi
def action_done(self):
return {
'name': _(u'科目'),
'view_type': 'form',
"view_mode": 'tree,form',
'res_model': 'account.account',
'type': 'ir.actions.act_window',
'domain': [('id', 'in', return_list)],
'views': [(tree_id, 'tree'), (form_id, 'form')],
'view_id': [tree_id],
}

2.multi使用可以参考one装饰类,不过multi类有返回值。

3.model装饰类,该装饰类一般用于定义定时任务的方法中

类似于旧API:

def action_done(self,cr,uid,context=None):
pass

通过实例,可以看出model装饰类,是没有ids传入的,但是他可以有返回值。

总结:

1.其实通过上面的实例不难看出,model与multi可以有返回值,而one是没有返回值的,如果用one装饰器,即使写了return,也是没有作用的,虽然不会报错,但是如果不知道原因的瞎折腾也是比较折磨人的

2.还有一点区别的是multi与one装饰类是有ids传入的,而model没有ids传入。

【转】odoo 新API装饰器中one、model、multi的区别的更多相关文章

  1. odoo API装饰器one、model、multi的区别

    1.one装饰器详解 odoo新API中定义方式:    date=fields.Date(string="date",compute="_get_date") ...

  2. Odoo的@api.装饰器

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281437.html Odoo自带的api装饰器主要有:model,multi,one,constrains, ...

  3. Odoo 新 API 概述

    __all__ = [ 'Environment', 'Meta', 'guess', 'noguess', 'model', 'multi', 'one', 'cr', 'cr_context', ...

  4. JS中bind、call和apply的作用以及在TS装饰器中的用法

    目录 1,前言 1,call 1.1,例子 1.2,直接调用 1.3,将this指向另一个对象 1.4,传递参数 2,apply 2.1,例子 2.2,直接调用 2.3,将this指向另一个对象 2. ...

  5. python_如何修改装饰器中参数?

    案例: 为分析程序内哪些函数执行时间开销较大,我们需定义一个带timeout参数的装饰器 需求: 统计被装饰函数的运行时间 时间大于timeout时,将此次函数调用记录到log日志中 运行时可以修改t ...

  6. odoo10 api 装饰器

    http://www.cnblogs.com/kfx2007/p/3894297.html one:装饰record-style方法中的self为单一实例,被装饰的方法将会在每一条记录中循环调用,返回 ...

  7. ODOO 新API修饰符

    Odoo8中,API接口分为traditaional style和record style两种类型: traditional style指的就是我们在7.0中使用的类型,def(self,cr,uid ...

  8. python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变

    Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...

  9. 005.ES2016新特性--装饰器

    装饰器在设计阶段可以对类和属性进行注释和修改,在Angular2中装饰器非常常用,可以用来定义组件.指令以及管道,并且可以与框架提供的依赖注入机制配合使用. 从本质上上讲,装饰器的最大作用是修改预定义 ...

随机推荐

  1. GO语言(六)接口使用

    <music> |------<src> |-------<library> |-------manager.go |-------manager_test.go ...

  2. jq仿 妙味课堂导航01

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. nbu异地备份实施前,数据收集日志

    1.修改bp.conf配置文件显示重删率 BPDBJOBS_COLDEFS = JOBID 5 true BPDBJOBS_COLDEFS = TYPE 7 false BPDBJOBS_COLDEF ...

  4. 练习:HPH 数据

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 第六章.MyBatis缓存结构

    一级缓存 测试案例: MyBatisTest.java //缓存 @Test public void testFindCustomerCache1() throws Exception{ SqlSes ...

  6. 小BAT解决大麻烦_某卡教室控制软件

    @echo off mode con cols= lines= if "%1" == "h" goto begin mshta vbscript:)(windo ...

  7. ASP.NET Web API编程——使用Odata

    路由配置 routePrefix路由前缀,必须含有Odata字符串,否则路由不到Odata控制器. V1表示版本,可以使用这种方式进行版本控制,也可以使用其他方式. config.Count().Fi ...

  8. 不推荐在iOS的浏览器应用上使用click和mouseover

    iOS上的Safari也支持click 和mouseover等传统的交互事件,只是不推荐在iOS的浏览器应用上使用click和mouseover,因为这两个事件是为了支持鼠标点击而设计 出来的.Cli ...

  9. 移动端meta标签的设置

    var phoneWidth = parseInt(window.screen.width); var phoneScale = phoneWidth / 640; var ua = navigato ...

  10. vue入门学习示例

    鄙人一直是用angular框架的,所以顺便比较了一下. <!DOCTYPE html> <html lang="en"> <head> < ...