Datatyperne for postgres i Django er knyttet til strengen literal timestamp with time zone
, og der ser ikke ud til at være en mulighed for at ændre den type.
Så vidt jeg ved, har du tre muligheder:
-
Udnyt Djangos hook til at udføre rå sql efter create table-sætningen . For at gøre dette skal du oprette en mappe kaldet
sql
i din app og en fil i den mappe kaldetmymodel.postgres_psycopg2.sql
. Placer dine ændringstabeludsagn derinde. -
Skriv et brugerdefineret felt for at definere modifikatorerne for tidsstempelfeltet, som du finder passende. Se "skrivning af tilpassede modelfelter ".
-
Lad django-feltet være, som det er, og udfør tidszonekonverteringen i din applikation, så du er helt sikker på, at du passerer den rigtige tid.
Min personlige præference for dataintegritet er #3. Ligesom med tegnkodninger, hvor du altid vil være sikker på, at du kender tegnsættet og håndterer konverteringer korrekt, føler jeg mig meget mere komfortabel med datoer/tidspunkter, hvis attributter (inklusive TZ) er så præcist definerede, som de kan være. Du kan i dag være sikker på, at alle dine input kommer til din app allerede i UTC, men det kan ændre sig, især hvis tidsstemplerne leveres af slutbrugere. For hvad det er værd, ville jeg gå den ekstra mil, konvertere tidsstemplet i appen til UTC og gemme det i DB med UTC som tidszone.