開發中經常有這樣的場景,需要給某個日期或者時間類型的字段默認值;
總結一下,實現方式,大概有3種寫法:
(1)odoo自帶模型字段:"fields."
可以在odoo模型定義中進行設置,如下樣例提供參考:
test_data = fields.Date(string=u"日期", default=fields.Date.today) # 日期,默認今天寫法
test_time = fields.Datetime(string=u"時間", default=fields.Datetime.now) #默認值為:系統當前時間
(2) 利用python自帶時間模塊
---這里注意一下,可能有個小坑,默認時間盡量用第一種方式,如果調python的模塊包賦值,而odoo程序又運行在docker容器中,那么這種情況下界面上生成的時間,會有一定時差,重啟容器可以解決。
from datetime import datetime
test_time = fields.Datetime(string=u"當前時間", default=datetime.now()) #默認值為:系統當前時間
(3)自己構造個方法:用到odoo api.model
定義內部方法:_get_now_time,方法內調用python時間模塊給到字段值,然后定義字段的時候,default=_get_now_time
注意,代碼先后順序,先定義方法,再寫字段調用方法。
@api.model def _get_now_time(self): test_time = datetime.now() print('******************* date_time_now ***********************') print(date_now) return date_now test_time = fields.Datetime(string=u'當前時間', copy=False, track_visibility='onchange', default=_get_now_time)
OK, 小伙伴們,可以嘗試下。