如何获取 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)