PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Campo Django DateTime per generare campi timestamp senza fuso orario

I tipi di dati per postgres in Django sono mappati sulla stringa letterale timestamp with time zone , e non sembra esserci un'opzione per modificare quel tipo.

Per quanto ne so, hai tre opzioni:

  1. Sfrutta l'hook di Django per eseguire raw sql dopo l'istruzione create table . Per fare ciò crea una directory chiamata sql nella tua app e un file in quella directory chiamato mymodel.postgres_psycopg2.sql . Inserisci lì le tue dichiarazioni alter table.

  2. Scrivi un campo personalizzato per definire i modificatori per il campo timestamp come meglio credi. Vedere "scrivere campi modello personalizzati ".

  3. Lascia il campo django così com'è ed esegui la conversione del fuso orario nella tua applicazione in modo da essere assolutamente certo di passare l'ora corretta.

La mia preferenza personale per l'integrità dei dati è #3. Proprio come con le codifiche dei caratteri, in cui vuoi sempre essere sicuro di conoscere il set di caratteri e di gestire correttamente le conversioni, mi sento molto più a mio agio con date/ora i cui attributi (incluso TZ) sono definiti con la massima precisione possibile. Oggi potresti essere certo che tutto il tuo input arrivi alla tua app già in UTC, ma ciò potrebbe cambiare, in particolare se i timestamp sono forniti dagli utenti finali. Per quel che vale, farei uno sforzo in più, convertirei il timestamp nell'app in UTC e lo memorizzerei nel DB con UTC come fuso orario.