Django DateTimeField Armazena datetime independentemente do tzinfo

Por que o django DateTimeField restaura o tzinfo em datetime para ?

Abaixo está o meu código de teste.

É normal ou errado?

Se é normal, qual é o motivo?

 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 que as lojas de django 2015-10-22 20:31:56.248000 e retornem datetime.datetime(2015, 10, 22, 20, 31, 56, 248000, tzinfo=)

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

Eu usei o Sqlite .

Certifique-se de ler a documentação do fuso horário do Django . A abordagem é apresentada sucintamente na primeira frase:

Quando o suporte para fusos horários é ativado, o Django armazena informações de data e hora no UTC no database , usa objects datetime com reconhecimento de fuso horário internamente e os converte no fuso horário do usuário final em modelos e formulários.

Então, sim, é normal que você veja o valor de retorno do database no UTC.

Quanto ao porquê, a documentação declara:

Mesmo que seu site esteja disponível em apenas um fuso horário, ainda é recomendável armazenar dados em UTC no database. O principal motivo é o horário de verão (DST). Muitos países têm um sistema de DST, onde os relógios são movidos para a frente na primavera e para trás no outono. Se você estiver trabalhando no horário local, provavelmente encontrará erros duas vezes por ano, quando as transições acontecerem.

Ele também vincula a uma descrição mais detalhada na documentação do pytz .