Odoo安裝/更新模塊原理 Odoo每次安裝/更新模塊時,會進行以下幾步處理: 1.判斷是否需要創建表,如果需要創建且表不存在,則進行表的創建(不進行欄位的創建); 2.獲取該表中已經存在的欄位; 3.獲取odoo模型中的所有欄位; 4.遍歷欄位,對需要存儲的欄位,進行欄位的更新/創建,欄位屬性的更 ...
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安裝/更新模塊原理 一節理解。