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, 小伙伴们,可以尝试下。

posted @ 2019-06-21 15:49  hello-Jesson  阅读(2244)  评论(0编辑  收藏  举报