models.DateTimeField(auto_now_add = True)

时间:2013-05-04 18:28:07

标签: python django models

我的models.DateTimeField存在问题,因为我来自México,在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)

1 个答案:

答案 0 :(得分: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