De gegevenstypen voor postgres in Django verwijzen naar de letterlijke tekenreeks timestamp with time zone
, en er lijkt geen optie te zijn om dat type te wijzigen.
Voor zover ik weet, heb je drie opties:
-
Profiteer van Django's hook voor het uitvoeren van raw sql na de instructie create table . Maak hiervoor een map aan met de naam
sql
in uw app en een bestand in die map met de naammymodel.postgres_psycopg2.sql
. Plaats daar je alter-tabelverklaringen. -
Schrijf een aangepast veld om de modifiers voor het tijdstempelveld naar eigen inzicht te definiëren. Zie "aangepaste modelvelden schrijven ".
-
Laat het django-veld zoals het is en voer de tijdzoneconversie uit in uw applicatie, zodat u er absoluut zeker van bent dat u de juiste tijd doorbrengt.
Mijn persoonlijke voorkeur voor data-integriteit is #3. Net als bij tekencoderingen, waarbij je er altijd zeker van wilt zijn dat je de tekenset kent en conversies correct afhandelt, voel ik me veel comfortabeler met datums/tijden waarvan de attributen (inclusief TZ) zo nauwkeurig mogelijk zijn gedefinieerd. U kunt er vandaag zeker van zijn dat al uw invoer al in UTC naar uw app komt, maar dat kan veranderen, vooral als de tijdstempels door eindgebruikers worden aangeleverd. Voor wat het waard is, zou ik een stap verder gaan, de tijdstempel in de app converteren naar UTC en deze opslaan in de database met UTC als tijdzone.