PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Campo Django DateTime para gerar campos de carimbo de data/hora sem fuso horário


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

Até onde eu sei, você tem três opções:

  1. Aproveite o gancho do Django para executar raw sql 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 instruções alter table lá.

  2. Escreva um campo personalizado para definir os modificadores para o campo de carimbo de data/hora como achar melhor. Consulte "escrevendo campos de modelo personalizados ".

  3. Deixe o campo django como está e execute a conversão de fuso horário em seu aplicativo para ter certeza absoluta de que está passando a hora correta.

Minha preferência pessoal pela integridade dos dados é #3. Assim como nas codificações de caracteres, onde você sempre quer ter certeza de que conhece o conjunto de caracteres e está lidando com as conversões corretamente, me sinto muito mais confortável com datas/horas cujos atributos (incluindo TZ) são definidos com a maior precisão possível. Você pode ter certeza hoje de que todas as suas entradas estão chegando ao seu aplicativo já em UTC, mas isso pode mudar, principalmente se os carimbos de data/hora forem fornecidos por usuários finais. Se vale a pena, eu faria um esforço extra, converteria o carimbo de data/hora no aplicativo para UTC e o armazenaria no banco de dados com UTC como fuso horário.