0

我的 models.DateTimeField 有问题,因为我来自墨西哥,在 settings.py 中我使用这个:

TIME_ZONE = 'America/Mexico_City'

但是当我在我的 mysql 数据库中添加一个寄存器时,它说该寄存器是在 18:00 添加的(4 小时后,因为这里,在墨西哥城是 14:00)

titulo = models.CharField(max_length = 60)
contenido = models.CharField(max_length = 140)
fecha = models.DateTimeField(auto_now_add = True)
4

1 回答 1

4

如果启用 USE_TZ = True,那么 Django 在数据库中始终使用 UTC。这就是为什么您会看到提前 4 小时的时间——即 UTC 时间。

https://docs.djangoproject.com/en/dev/topics/i18n/timezones/

Django 有帮助程序来获取 UTC,然后当您在视图中显示它时为您转换回来。尝试从使用 DateTimeField 的数据库中获取一个对象,并{{ value }}在日期时间所在的视图中尝试此操作:

{% load tz %}

{% localtime on %}
    {{ value }}
{% endlocaltime %}

{% localtime off %}
    {{ value }}
{% endlocaltime %}

如果您还没有安装 pytz,您可能需要安装:

pip install pytz
于 2013-05-05T05:11:57.620 回答