Datové typy pro postgres v Django mapují na řetězcový literál timestamp with time zone
a nezdá se, že by existovala možnost tento typ změnit.
Pokud vím, máte tři možnosti:
-
Využijte Django's hook pro spouštění raw sql za příkazem create table . Chcete-li to provést, vytvořte adresář s názvem
sql
ve vaší aplikaci a soubor v tomto adresáři s názvemmymodel.postgres_psycopg2.sql
. Umístěte tam své příkazy alter table. -
Napište vlastní pole pro definování modifikátorů pro pole časového razítka, jak uznáte za vhodné. Viz "zápis polí vlastního modelu ".
." -
Ponechte pole django tak, jak je, a proveďte převod časového pásma ve své aplikaci, abyste si byli naprosto jisti, že ubíháte správný čas.
Moje osobní preference pro integritu dat je číslo 3. Stejně jako u kódování znaků, kde si vždy chcete být jisti, že znáte znakovou sadu a správně zpracováváte převody, cítím se mnohem pohodlněji s daty/časy, jejichž atributy (včetně TZ) jsou tak přesně definované, jak jen mohou být. Dnes si můžete být jisti, že všechny vaše vstupy do vaší aplikace přicházejí již v UTC, ale to se může změnit, zejména pokud časová razítka dodávají koncoví uživatelé. Za to, co stojí za to, bych udělal něco navíc, převedl časové razítko v aplikaci na UTC a uložil ho do databáze s UTC jako časovým pásmem.