sql >> Databasteknik >  >> RDS >> PostgreSQL

Django DateTime-fält för att generera tidsstämpelfält utan tidszon

Datatyperna för postgres i Django mappar till strängen literal timestamp with time zone , och det verkar inte finnas något alternativ att ändra den typen.

Så vitt jag vet har du tre alternativ:

  1. Dra nytta av Djangos hook för att köra raw sql efter skapa tabellsatsen . För att göra detta skapa en katalog som heter sql i din app och en fil i den katalogen som heter mymodel.postgres_psycopg2.sql . Placera dina ändringstabellsatser där.

  2. Skriv ett anpassat fält för att definiera modifierarna för tidsstämpelfältet som du tycker är lämpligt. Se "skriva anpassade modellfält ".

  3. Lämna django-fältet som det är och utför tidszonsomvandlingen i din applikation så att du är helt säker på att du passerar rätt tid.

Min personliga preferens för dataintegritet är #3. Precis som med teckenkodningar, där du alltid vill vara säker på att du känner till teckenuppsättningen och hanterar konverteringar på rätt sätt, känner jag mig mycket mer bekväm med datum/tider vars attribut (inklusive TZ) är så exakt definierade som de kan bli. Du kan vara säker idag på att all din input kommer till din app redan i UTC, men det kan ändras, särskilt om tidsstämplarna tillhandahålls av slutanvändare. För vad det är värt skulle jag gå den extra milen, konvertera tidsstämpeln i appen till UTC och lagra den i DB med UTC som tidszon.




  1. MYSQL-fråga - Få senaste kommentar relaterad till inlägget

  2. Är vänster yttre skarvar och vänster skarvar lika?

  3. Ta reda på antalet månader mellan 2 datum

  4. mysql antal poster i markören utan iteration?