odoo开发笔记--日期or时间字段给定默认值
开发中经常有这样的场景,需要给某个日期或者时间类型的字段默认值;
总结一下,实现方式,大概有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, 小伙伴们,可以尝试下。