odoo12的計算字段compute和related


**

odoo12的計算字段compute和related

**
odoo的計算字段默認不保存在數據庫中,使用的時候在進行計算,不能用作domain等篩選的時候或者其他函數中引用該字段使用,可以使用store=True強制保存到數據庫中.但是加了store=True表示該字段只能計算一次.下面來看一下compute和related的時候怎么解決只計算一次的問題

  1. compute利用函數進行計算,加上@api.depends()裝飾器,依賴其他字段觸發計算.這樣便可以解決store=True只計算一次的問題
  2. related依賴其他字段

怎么修改計算字段的值?
計算字段默認是只讀的,要想修改計算字段,就要在字段定義中加入inverse屬性inverse='函數名',反參數的使用非常簡單。通常,計算字段是只讀的,因為它從記錄集即時計算值。如果您需要在 計算字段上進行手動輸入,可以通過給出反函數來完成。因此,當字段被寫入/創建時,它會觸發對修飾函數的調用。它反轉計算並設置相關字段。

Invserse 通俗點講的話,他是 Compute 的相反設置.我們在 field 中設置了它對應的 Compute 計算方法,那么這個字段就變成了只讀的,這時候我們可以設置 inverse,來達到為該字段賦值的目的。設置了 inverse 這個,字段就可以在前端直接編輯,賦值就是通過這個 inverse 設置的方法

upper=fields.Char(compute='_compute_upper',inverse='_inverse_upper', search='_search_upper')

@api.depends('employee_id') 
def _compute_upper(self):
for rec in self:
	rec.upper = rec.employee_name.upper() if rec.employee_name else False

def _inverse_upper(self): 
for rec in self:
	rec.employee_name = rec.upper.lower() if rec.upper else False


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM