Типовете данни за postgres в Django се съпоставят с низовия литерал timestamp with time zone
и изглежда няма опция за промяна на този тип.
Доколкото ми е известно, имате три възможности:
-
Възползвайте се от куката на Django за изпълнение на raw sql след израза за създаване на таблица . За да направите това, създайте директория, наречена
sql
във вашето приложение и файл в тази директория, нареченmymodel.postgres_psycopg2.sql
. Поставете вашите изрази за алтер таблица там. -
Напишете персонализирано поле, за да дефинирате модификаторите за полето за клеймо за време, както сметнете за добре. Вижте "записване на персонализирани полета за модел ".
-
Оставете полето django така, както е, и извършете преобразуването на часовата зона във вашето приложение, така че да сте абсолютно сигурни, че предавате правилното време.
Моето лично предпочитание за целостта на данните е #3. Точно както при кодировките на знаци, където винаги искате да сте сигурни, че знаете набора от знаци и обработвате преобразувания правилно, аз се чувствам много по-комфортно с дати/часове, чиито атрибути (включително TZ) са толкова прецизно дефинирани, колкото могат да бъдат. Днес може да сте сигурни, че всичките ви въведени данни идват в приложението ви вече в UTC, но това може да се промени, особено ако времевите клейма се предоставят от крайните потребители. Колкото и да си струва, бих положил повече усилия, бих преобразувал клеймото за време в приложението в UTC и го съхрани в базата данни с UTC като часова зона.