odoo中的反函数即通过设置字段的 inverse 属性实现,在讲这个属性之前,我们需要知道

compute 这个属性的作用,设置了compute属性的字段被称之为计算字段 ,当前端视图引用了这个字段的时候,后端就会调用compute属性所绑定的函数,当计算字段还需要随着其他字段的变化而变化的时候,就需要使用@api.depends 装饰器。

如下引用官网中的例子:

from odoo import api, fields, modelsclass TestComputed(models.Model):_name = "test.computed"total = fields.Float(compute="_compute_total", inverse="_inverse_total")amount = fields.Float()@api.depends("amount")def _compute_total(self):for record in self:record.total = 2.0 * record.amountdef _inverse_total(self):for record in self:record.amount = record.total / 2.0

字段total就是一个计算字段,设置了compute属性,绑定函数 _compute_total,而且使用了装饰器,随着amount字段值的变化而重新计算,由于计算字段是一个依赖字段,在前端页面用户是不能手动编辑的,而我们又想通过自动设置这个字段的值更新它所依赖的字段的值,这时候我们就要用到inverse属性。

如上图代码所示:

当用户手动更新total的值的时候,amount的值也会随着更新

odoo 字段inverse属性解析相关推荐

  1. 06章 映射一对多双向关联关系、以及cascade、inverse属性

    当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象.或者通过集合导航到一组对象.例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp ...

  2. 如何使用odoo的compute方法,自动计算odoo字段

    前言 在odoo的ORM创建数据字段的过程中,我们会经常需要定义一些字段用来计算某一些字段只和或其他计算结果. 今天介绍一个很好用的方法compute计算属性,这个方法其实是属于写在odoo fiel ...

  3. Hibernate中inverse属性与cascade属性

    Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性.对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现 ...

  4. 【Hibernate】的Inverse属性

    Inverse属性,是在维护关联关系的时候起作用的. 表示控制权是否转移.(在一的一方起作用) Inverse , 控制反转.默认为false不反转 Inverse = false  不反转:   当 ...

  5. Django Meta元数据类属性解析

    Django Meta元数据类属性解析 Model 是 Django ORM 的核心,它有许多特性,比如我们提到过的模型类继承,还有未讲到过的的元数据.每个 Model 都是一个 Python 类,且 ...

  6. element 往node里面增加属性值_【Vue原理】Compile - 源码版 之 Parse 属性解析

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 [2.5.17] 如果你觉得排版难 ...

  7. 字段和属性之间有什么区别?

    在C#中,是什么使字段不同于属性,以及何时应使用字段代替属性? #1楼 (这实际上应该是评论,但我不能发表评论,因此,如果它不适合发表,请原谅). 我曾经在一个推荐的实践是在公共属性而不是属性的地方工 ...

  8. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  9. java类中定义索引器,C#面向对象基础——字段、属性和索引器

    关于面向对象编程,在很多语言里面都出现过,最常用的如java和c++, C#语言关于面向对象编程的规范,我觉得介于上面两者之间,我的理解是它比较偏向c++,或许是因为跟它的析构函数有关系,像java有 ...

最新文章

  1. 特斯拉车主「作死」成真:炫耀「主驾无人」,自动驾驶导致车毁人亡
  2. 动态“神还原”李焕英旧照,用技术致敬每一位妈妈!
  3. wps如何自己制作流程图_WPS如何绘制流程图? WPS绘图流程图详细教程
  4. linux脚本开头的#!/bin/bash有什么作用
  5. 《信号与系统》(吴京)部分课后习题答案与解析——第二章(PART2)
  6. apple id两步验证服务器,【安全可靠】Apple ID 两步验证支持中国地区 - 爱应用
  7. ipa 安装包不用市场如果扫码下载安装 免费IOS安装API
  8. hdu 2629 Identity Card (字符串解析模拟题)
  9. USB 为什么一般选择48MHz
  10. SVAC国家标准介绍
  11. 关于银河麒麟系统配置本地yum源配置流程说明
  12. 报表中的地图怎么做?
  13. 软件定义网络基础(SDN④)
  14. C#实现程序的版本在线升级更新
  15. 微电子声学行业调研报告 - 市场现状分析与发展前景预测
  16. 软件工程---习题二
  17. ####好好好好####基于Tacotron汉语语音合成的开源实践
  18. 2010、2011年中国融资、IPO、并购事件
  19. 新手入门:windows系统下wbe项目迁移至Linux系统下乱码问题
  20. php 数组相加和合并,php数组合并、追加与连接的方法(array_merge()、array_combine()函数)...

热门文章

  1. detached HEAD以及切换分支代码丢失
  2. 实训记录(二)——分镜的制作!
  3. 基于node.js网上蛋糕店系统的设计与实现(论文+项目源码)
  4. linux printk 优先级,printk与日志优先级设置
  5. 三维仿真在智慧城市中的运用,机械臂智能垃圾分类
  6. #ifndef, #define, #endif 作用
  7. SAR(逐次逼近)型ADC
  8. IOS开发之——IOS模拟器调试蓝牙BLE
  9. 模仿360安全卫士项目笔记2
  10. php plupload上传失败,plupload,多次上传-无效_plupload自动上传,第二次提交无效。,plupload,多次上传-无效 - phpStudy...