当前位置:网站首页>DTcloud 装饰器
DTcloud 装饰器
2022-08-05 08:28:00 【中亿丰数字科技集团有限公司】
什么是装饰器?
python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象。
DTCloud自带的api装饰器主要有:depends,onchange,constrains,one,returns,multi,model,noguess八个装饰器
@api.depends:
这个装饰器主要运用在odoo的字段相关的函数中。在函数中,对该字段值进行处理时,如果计算值依赖于其他相关字段,不论是与该字段隶属同一张表的还是其他表的字段,都会触发所编写的字段函数。
正因为此,可以利用@api.depends 装饰来侦测与字段相关的其他表的字段。如果decorator中依赖的任何字段“被ORM更改或在表单中更改”,都将触发对decorated函数的调用。
简单的说:就是有针对性的调用函数。
@api.onchange
这个装饰器触发decorated函数的时机是:定义的指定字段如果在form窗体出现了变化,就会触发执行。这里要注意的是,这些字段是隶属于同一个模型或同一界面。
综上,虽然 @api.depends 与@api.onchange有诸多相似的地方,但一个重要区别就是 onchange 的侦测字段范围需要在同一个模型或界面上;而depends 可以侦测关联的模型的字段(可以跨不同表)。
@api.constrains
constrains修饰的方法,并在记录集上调用。即写一个函数,去条件判断。如果不满足约束条件,会弹框报警告。
@api.one
这个装饰器自动遍历记录集的记录,self被重新定义为当前记录:
注意:返回值被放进一个列表里,这种做法并不是总被网页客户端支持,例如在按钮动作方法里。在那种情况下,你应该用 @api.multi 来装饰你的方法,并且可能需要在方法定义里调用 self.ensure_one() 。
@api.returns
这个装饰器保证返回值的一致性。 它基于原始返回值返回指定模型的一个记录集:
如果一个旧API方法调用新API方法,它会自动转换为一个id列表。所有装饰器都继承自这个装饰器,以升级或降级返回值。
@api.multi
self为当前记录集,无迭代。 以下是缺省做法:multi则是指self是多个记录的合集。因此,常使用for或self.ensure_one()来遍历self,否则会出现最大递归错误。multi通常用于:在tree视图中点选多条记录,然后执行某个方法,那么那个方法必须用@api.multi修饰,而参数中的self则代表选中的的多条记录。如果仅仅是在form视图下操作,那么self中通常只有当前正在操作的记录。
@api.model
这个装饰器会把旧API对它装饰的方法的调用转换到新API参数。 它让我们可以优雅的迁移旧代码:
@api.noguess
这个装饰器阻止新API装饰器去改变一个方法的输出。
边栏推荐
- MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
- pnpm 是凭什么对 npm 和 yarn 降维打击的
- How Entrepreneurs Attract Venture Capitalists
- Three solutions to solve cross-domain in egg framework
- 剑指Offer面试题解总结1-10
- 版本号命名规则
- D2--FPGA SPI interface communication2022-08-03
- JS语法使用
- 青苹果论坛重新开放
- 【结构体内功修炼】结构体实现位段(二)
猜你喜欢
随机推荐
DPU — 功能特性 — 管理系统的硬件卸载
星座理想情人
数据源对象管理Druid和c3p0
DPU — 功能特性 — 安全系统的硬件卸载
SVG星球大战样式Toggle切换开关按钮
让硬盘更快,让系统更稳定
What is the connection and difference between software system testing and acceptance testing? Professional software testing solution recommendation
What is a good movie to watch on Qixi Festival?Crawl movie ratings and save to csv file
支持触屏slider轮播插件
生命的颜色占卜
How to make a puzzle in PS, self-study PS software photoshop2022, PS make a puzzle effect
Three solutions to solve cross-domain in egg framework
pnpm 是凭什么对 npm 和 yarn 降维打击的
SVG Star Wars Style Toggle Toggle Button
8.4 Summary of the mock competition
软件系统测试和验收测试有什么联系与区别?专业软件测试方案推荐
【结构体内功修炼】结构体实现位段(二)
egg framework
Iptables implementation under the network limited (NTP) synchronization time custom port
spark集群部署(第三弹)