Odoo安装/更新模块原理

Odoo每次安装/更新模块时,会进行以下几步处理:

  • 1.判断是否需要创建表,如果需要创建且表不存在,则进行表的创建(不进行字段的创建);
  • 2.获取该表中已经存在的字段;
  • 3.获取odoo模型中的所有字段;
  • 4.遍历字段,对需要存储的字段,进行字段的更新/创建,字段属性的更新;
  • 5.如果是compute字段且store=True,则将compute方法加入任务队列,进行历史数据的计算存储;

因为调用的是Odoo的ORM,会导致计算存储时间过长;

解决方案

Odoo安装/更新模块时间过长解决方案

方案1

原理:不使用compute字段,每次保存某关键字段时调用方法

  • 1.不使用compute类型而改为常规类型;
  • 2.历史数据在安装/更新时使用sql处理;
  • 3.新记录使用depends/contrains方式在保存数据时调用函数解决;

方案2

原理:预先使用sql创建字段在安装/更新时会跳过compute方法

  • 1.使用compute字段;
  • 2.在安装/升级模块前先使用sql给表新增字段及添加值;
  • 3.安装/升级模块后走compute方法;

方案3

原理:安装/更新模块跳过python方法,使用sql计算值

  • 1.使用compute字段;
  • 2.在安装/更新模块时,不触发方法;新记录触发;
  • 3.安装/更新后,使用sql处理历史数据;

具体原理请结合 odoo安装/更新模块原理 一节理解。

odoo关于计算字段store=True时导致的安装/更新时间较长问题的解决方案的更多相关文章

  1. 【Android Studio使用教程5】使用SDK Manager时, SDK下载更新不了的解决方案(eclipse 也适用)

    在线更新sdk时会很慢,甚至下载不了, 此时在SDK Manager中,选择Tools,Proxy里面填上 mirrors.neusoft.edu.cn 和 80 把下面的force https xx ...

  2. openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)

    计算字段.关联字段,对象修改时自动变更保存(当 store=True 时),当 store=False 时,默认不支持过滤和分组7.0中非计算字段.关联字段只读时无法修改保存的问题暂未解决 示例代码: ...

  3. mysql必知必会--创建计算字段

    计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式.下面举 几个例子. * 如果想在一个字段中既显示公司名,又显示公司的地址,但这两 个信息一般包含在不同的表列中. * 城市.州和邮政编码存 ...

  4. EF Power Tools的Reverse Engineer Code First逆向生成Model时处理计算字段

    VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成Model时,没有处理计算字段.在保存实体时会出现错误. 可以通过修改Mapping.tt ...

  5. QuickBI助你成为分析师——计算字段功能

    摘要: 在用户创建报表时,通过现有字段数据不能直接满足展示需求,需要进行一定建模操作.目前产品支持在数据集编辑界面进行初步建模,下面主要介绍新建字段功能,以达到展示需求. 在用户创建报表时,有时通过现 ...

  6. 使用XtraReport的CalculatedFiled(计算字段)实现RDLC报表中表达式

    DevExpress报表确实强大,花样繁多,眼花缭乱. 这次使用XtraReport开发报表,很多问题在官方的文档中并没有详细的说明,特此记录. 1.XtraReport中FormattingRule ...

  7. 有关.NET链接Oracle数据库,使用连接池pooling=true时问题

    .net链接oracle数据库时,当链接字符串中pooling=true时,视图结构变更时程序报错问题,还请高手指教 现象: 链接字符串: 注意:这里pooling=true: 测试视图: 执行的SQ ...

  8. 解决Popup StayOpen=true时,永远置顶的问题

    Popup设置了StayOpen=true时,会置顶显示. 如弹出了Popup后,打开QQ窗口,Popup显示在QQ聊天界面之上. 怎么解决问题? 获取绑定UserControl所在的窗口,窗口层级变 ...

  9. TkbmMWClientQuery的计算字段在CalcFields事件触发次数太多

    kbmmw有两处BUG和作者提下,一个是TkbmMWClientQuery的计算字段在CalcFields事件触发次数太多,另一个是在TkbmMemTable的加载数据时字段会执行OnValidate ...

  10. TClientDataSet[9]: 计算字段和 State

    TClientDataSet 中计算字段有两种: Calculated(计算字段).InternalCalc(内部计算字段). 两者区别是: Calculated 在每次需要时都要重新计算; Inte ...

随机推荐

  1. 谈谈对K8S CNI、CRI和CSI插件的理解

  2. K8S容器HeadlessService间动态IP通信

    文件网址:https://www.kubebiz.com/KubeBiz/MongoDB?k8sv=v1.20 使用文件网址中提供的yaml文件安装三节点的mongodb集群,其service是hea ...

  3. Elasticsearch集群管理之添加、删除节点

    1.问题抛出 1.1 新增节点问题 我的群集具有黄色运行状况,因为它只有一个节点,因此副本保持未分配状态,我想要添加一个节点,该怎么弄? 1.2 删除节点问题 假设集群中有5个节点,我必须在运行时删除 ...

  4. Beats:运用 Logstash 来加工 Metricbeat 数据

    文章转载自:https://elasticstack.blog.csdn.net/article/details/116496272

  5. nexus迁移

    1.找到nexus主目录和sonatype-work目录打包,一般在 /usr/local/nexus 和 /usr/local/sonatype-work # tar -czvf nexus.tar ...

  6. Node.js(六)连接MongoDB进行数据访问

    npm init -y(初始化项目) npm install mongodb --save(引入MongoDB) const { MongoClient } = require("mongo ...

  7. 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...

  8. C言语语法总结(随时更新)

    一.gcc1. gcc xxx.c -o xxx #把原代码编译成可执行文件xxx2. gcc -c xxx.c #编译: 把原代码编译xxx.o后辍的目标文件3. gcc xxx.o -o xxx ...

  9. Day3 最短路 最小生成树 拓扑排序

    Day3 最短路 最小生成树 拓扑排序 (一)最短路 一.多源最短路 从任意点出发到任意点的最短路 1. Floyd \(O(n^3)\) for(int k=1;k<=n;k++) for(i ...

  10. 后端框架的学习----mybatis框架(7、使用注解开发)

    7.使用注解开发 1.注解在接口上实现 /** * 查询用户 */ @Select("select * from user") public List<User> ge ...