我想将我的DateField的默认值设置为UTC时区中的今天的日期。
如果我输入datetime.now(timezone.utc).date()
,它将是服务器重新启动时调用的固定值。
如果我放置timezone.now
,它将返回datetime对象,而不是day对象。
如何获取UTC时区的今天日期?可以调用的函数(末尾没有括号)
因为如果我放timezone.now().date
,是不是仅在重新启动服务器时才调用它,而不是不是在每次创建/更新对象时都调用它?
答案 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