Odoo中的逆計算——由compute字段的值逆向修改其依賴值
阿新 • • 發佈:2018-07-09
duration entry str blank targe 就是 獲取 second 時間
轉載請註明原文地址:https://www.cnblogs.com/cnodoo/p/9281406.html
當通過compute屬性指定方法,根據依賴值計算得到當前字段值時。一般也要制定這個計算的逆運算——根據當前字段值,改變依賴值。
比如:開始日期+持續時間=結束日期,我們有這個可以得到結束日期。
如果用戶指定了開始日期和結束日期,那麽持續時間=結束日期-開始日期,實現這個邏輯的方法就是inverse屬性值指向的方法。
#定義結束日期字段,結束日期由開始+持續,而設置結束日期,則需要自行計算出持續日期
end_date = fields.Date(string="End Date", store=True,
compute=‘_get_end_date‘, inverse=‘_set_end_date‘)
#"獲取結束日期"事件的響應函數:計算出結束日期
@api.depends(‘start_date‘, ‘duration‘)
def _get_end_date(self):
for r in self:
if not (r.start_date and r.duration):
r.end_date = r.start_date
continue
start = fields.Datetime.from_string(r.start_date)
duration = timedelta(days=r.duration, seconds=-1)
r.end_date = start + duration
#"設置結束日期"事件的響應函數:計算並設置持續時間
def _set_end_date(self):
for r in self:
if not (r.start_date and r.end_date):
continue
start_date = fields.Datetime.from_string(r.start_date)
end_date = fields.Datetime.from_string(r.end_date)
r.duration = (end_date - start_date).days + 1
Odoo中的逆計算——由compute字段的值逆向修改其依賴值