Django DateTimeField Almacena datetime independientemente del tzinfo

¿Por qué django DateTimeField restaura tzinfo en datetime a ?

A continuación se muestra mi código de prueba.

¿Es normal o está mal?

Si es normal, ¿cuál es la razón?

 models.py class Date(models.Model): datetime = models.DateTimeField() settings.py TIME_ZONE = 'Asia/Seoul' USE_TZ = True test.py from django.utils import timezone datetime = timezone.localtime(timezone.localtimezone.now()) #now datetime is datetime.datetime(2015, 10, 22, 20, 31, 56, 248000, tzinfo=) models.Date(datetime=datetime).save() #If I check datebase, It shows 2015-10-22 11:31:56.248000 model.Date.object.get(..) #It returns datetime.datetime(2015, 10, 22, 11, 31, 56, 248000, tzinfo=) 

Espero tiendas django 2015-10-22 20:31:56.248000 y devuelvo datetime.datetime(2015, 10, 22, 20, 31, 56, 248000, tzinfo=)

————–Editar—————-

Utilicé Sqlite .

Asegúrate de leer la documentación de la zona horaria de Django . El enfoque se indica sucintamente en la primera oración:

Cuando el soporte para zonas horarias está habilitado, Django almacena información de fecha y hora en UTC en la base de datos , utiliza objetos de fecha y hora reconocidos por zona horaria internamente y los traduce a la zona horaria del usuario final en plantillas y formularios.

Entonces, sí, es normal que vea el valor de retorno de la base de datos en UTC.

En cuanto a por qué, la documentación establece:

Incluso si su sitio web está disponible en una sola zona horaria, sigue siendo una buena práctica almacenar datos en UTC en su base de datos. La razón principal es el horario de verano (DST). Muchos países tienen un sistema de horario de verano, donde los relojes se mueven hacia adelante en spring y hacia atrás en otoño. Si está trabajando en la hora local, es probable que encuentre errores dos veces al año, cuando ocurren las transiciones.

También se enlaza a una descripción más detallada en la documentación de pytz .