如何获取 timezone.today 作为默认值?
How to get timezone.today as default value?
我想将 DateField 的默认值设置为今天的 UTC 时区日期。
如果我输入datetime.now(timezone.utc).date()
,它将是服务器重启时调用的固定值。
如果我输入 timezone.now
,它将 return 日期时间对象,而不是日期对象。
如何获取 UTC 时区的今天日期?一个可调用的函数(末尾没有括号)
因为如果我放timezone.now().date
,是不是只在服务器重启的时候调用,不是每次对象都是created/updated?
在您的 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
你似乎已经基本解决了你自己的问题。简单创建 "a function that is callable".
from datetime import datetime
def today_utc():
return datetime.utcnow().date()
class MyModel(models.Model):
my_field = models.DateField(default=today_utc)
我想将 DateField 的默认值设置为今天的 UTC 时区日期。
如果我输入datetime.now(timezone.utc).date()
,它将是服务器重启时调用的固定值。
如果我输入 timezone.now
,它将 return 日期时间对象,而不是日期对象。
如何获取 UTC 时区的今天日期?一个可调用的函数(末尾没有括号)
因为如果我放timezone.now().date
,是不是只在服务器重启的时候调用,不是每次对象都是created/updated?
在您的 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
你似乎已经基本解决了你自己的问题。简单创建 "a function that is callable".
from datetime import datetime
def today_utc():
return datetime.utcnow().date()
class MyModel(models.Model):
my_field = models.DateField(default=today_utc)