Django 在管理站点中查看时显示同一模型属性的两个不同时区与在脚本中查询模型

Django displays tow different timezones for the same model attribute when viewing in admin site vs a query for the model in a script

如何在 Django 中建立一致的时区。 在我的 settings.py 中,我有 TIME_ZONE = 'America/New_York'USE_TZ = True。我有模型

def MyModel(models.Model):
    date_time = models.DateTimeField(auto_now_add=True)

如果我查看该模型的字段(比如 pk=1),它会正确显示 eastern 时区的值。在我的终端上,当我 运行 python manage.py shell 查询同一字段 (pk=1) 时,它将以 UTC 格式打印该字段的 date_time 属性,如下所示:datetime.datetime(2020, 10, 22, 0, 19, 28, 696739, tzinfo=<UTC>)

为什么会这样?我怎样才能使所有查询在按日期过滤时使用正确的时区?

Django 模板级别自动将 UTC 转换为您的本地时间。但在模型级别,它们在 UTC 中处理。

您可以使用内置 timezone utils localtime 转换为您想要的输出。