Pergunta

Estou trabalhando em um aplicativo de Django, onde preciso de todos os campos do PostGres representados para o DateTime para serem salvos no UTC (como deveriam). Quando estou criando modelos com campos de data e hora, eles representam a representação do banco de dados é gerada como "Timestamp com fuso horário"Embora eu possa alterar manualmente as mesas para remover o fuso horário dos campos, eu estava me perguntando se o campo do modelo DateTime tem a capacidade de não fazer isso - ou seja, criar"Timestamp sem fuso horário"Para alguns campos. Isso é possível? Ou eu tenho que alterá -los mesas? Obrigado, Harel

Foi útil?

Solução

Os tipos de dados para o Postgres no mapa Django para a string literal timestamp with time zone, e não parece haver uma opção para alterar esse tipo.

Tanto quanto eu sei, você tem três opções:

  1. Aproveite o gancho de Django para executar SQL bruto após a instrução CREATE TABLE. Para fazer isso, crie um diretório chamado sql em seu aplicativo e um arquivo nesse diretório chamado mymodel.postgres_psycopg2.sql. Coloque suas declarações de tabela alternativas lá.

  2. Escreva um campo personalizado para definir os modificadores para o campo de registro de data e hora como você achar adequado. Ver "Escrevendo campos de modelo personalizado".

  3. Deixe o campo Django como está e execute a conversão do fuso horário em seu aplicativo, para que você esteja absolutamente certo de que está passando no momento correto.

Minha preferência pessoal pela integridade dos dados é #3. Assim como nas codificações de personagens, onde você sempre deseja ter certeza de que conhece o charset e está lidando com as conversões corretamente, sinto -me muito mais confortável com datas/tempos cujos atributos (incluindo TZ) são tão precisamente definidos quanto podem ser. Hoje, você pode ter certeza de que toda a sua opinião está chegando ao seu aplicativo no UTC, mas isso pode mudar, particularmente se os registros de data e hora forem fornecidos pelos usuários finais. Pelo que vale a pena, eu iria a milha extra, converteria o registro de data e hora no aplicativo para o UTC e o armazenou no banco de dados com o UTC como fuso horário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top