如何获取timezone.today作为默认值?

时间:2019-03-31 09:08:34

标签: django datefield

我想将我的DateField的默认值设置为UTC时区中的今天的日期。

如果我输入datetime.now(timezone.utc).date(),它将是服务器重新启动时调用的固定值。

如果我放置timezone.now,它将返回datetime对象,而不是day对象。

如何获取UTC时区的今天日期?可以调用的函数(末尾没有括号) 因为如果我放timezone.now().date,是不是仅在重新启动服务器时才调用它,而不是不是在每次创建/更新对象时都调用它?

2 个答案:

答案 0 :(得分:1)

您似乎基本上已经解决了自己的问题。简单创建“可调用的函数”。

from datetime import datetime

def today_utc():
    return datetime.utcnow().date()

class MyModel(models.Model):
    my_field = models.DateField(default=today_utc)

答案 1 :(得分:0)

在您的settings.py文件中,您必须设置以下变量:

USE_TZ = True

如果您现在想要获取正确的utc,请立即输入代码:

from django.utils import timezone

today = timezone.now().date()

如果模型中的字段为DateField,例如:my_field,请执行以下操作:

my_field = models.DateFiel(default=date.today)

如果您将名为my_field的字段设置为DateTimeField,请这样做:

my_field = models.DateTimeField(default=timezone.now)

并阅读doc