odoo 新API装饰器中one、model、multi的区别
在阅读本文章前,如果对one、model、multi装饰类不清楚的同学,可以参考本人前几篇文章。
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.model
def action_done(self):..............
类似于旧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的区别相关推荐
- odoo API装饰器one、model、multi的区别
1.one装饰器详解 odoo新API中定义方式: date=fields.Date(string="date",compute="_get_date" ...
- 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. ...
- python 装饰器参数_python_如何修改装饰器中参数?
#!/usr/bin/python3 import time import logging from random import randint def run_time(timeout): &quo ...
- 装饰器模式与代理模式的区别_JS设计模式(三):装饰器模式、代理模式
Do more 做的更多,比你上级给你安排的任务! 前言 在<不止代码>中提到了几个程序员典型的思维误区: 「 拜大牛为师 」「 业务代码一样很牛逼 」「 上班太忙没时间学习 」 我之前也 ...
- 装饰器模式和代理模式的区别
转载自 装饰器模式和代理模式的区别 学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是找了很多资料,想弄清 ...
- 浅析Python装饰器中的@property
点击上方"Go语言进阶学习",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 一.使用@prop ...
- python装饰器原理wraps(method)(self)_python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变...
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...
- python装饰器解析请求参数_我如何在装饰器中获得Flask可选的URL参数?
有一种更好的机制可以验证内置到Werkzeug(和Flask)中的url值.定义一个converter并像使用路由中的任何其他转换器一样使用它(例如,< int:id>). from we ...
- python functools import wraps_python装饰器中functools.wraps的作用详解
# 定义一个最简单的装饰器 def user_login_data(f): def wrapper(*args, **kwargs): return f(*args, **kwargs) return ...
最新文章
- eclipse 中的 maven run configurations
- Linux 下zip包的压缩与解压
- Linux脚本挂起运行
- Linux系统下对flash的测试方法
- 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
- python中可迭代对象,迭代器,生成器,协程
- frp + nginx 配置多人共用的http 内网穿透服务
- opensource项目_最佳Opensource.com:教育
- 深度学习算法 第四期
- Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found
- 跨域请求的两种实现方式
- java has a 关系,Java组成(has-a)关系澄清
- oracle的存储过程菜鸟教程,SQL菜鸟入门级教程之存储过程
- 给ftp服务器创建文件夹,ftp服务器上创建文件夹
- sql语句练习题(mysql版)
- 公司装了cofax传真服务器真的解决了收发传真时存在的诸多不便
- 黑苹果HIDPI开启问题
- rar压缩包的打开密码破解
- 计算机组成原理实验二八位寄存器,计算机组成原理课后参考答案
- java获取大写字母_获取中文大写首字母java实现
热门文章
- python middleware_Django框架之中间件MiddleWare的实现
- 算法工程师必看的优秀博客【持续更新。。。】
- 千万别成为受害者:手机防盗指南
- change和modify的区别
- prefetch 和preload_webpack优化之preload和prefetch
- 【调剂】2022年电子科技大学电子科学技术研究院硕士研究生招生调剂批工作安排通知...
- 基于mybatis读写分离插件
- 不多BB,我认为这份Java学习路线适合绝大多数想学习Java的人
- hisi perf uncore event介绍
- 安卓6.0运行时权限处理