Typy danych dla postgres w Django są mapowane na literał ciągu znaków timestamp with time zone
i wydaje się, że nie ma możliwości zmiany tego typu.
O ile mi wiadomo, masz trzy opcje:
-
Skorzystaj z zaczepu Django do wykonywania surowych sql po instrukcji create table . Aby to zrobić, utwórz katalog o nazwie
sql
w Twojej aplikacji i plik w tym katalogu o nazwiemymodel.postgres_psycopg2.sql
. Umieść tam swoje instrukcje alter table. -
Napisz niestandardowe pole, aby zdefiniować modyfikatory pola sygnatury czasowej według własnego uznania. Zobacz „pisanie niestandardowych pól modelu
-
Pozostaw pole django bez zmian i wykonaj konwersję strefy czasowej w swojej aplikacji, aby mieć całkowitą pewność, że mijasz właściwy czas.
Moje osobiste preferencje dotyczące integralności danych to #3. Podobnie jak w przypadku kodowania znaków, gdzie zawsze chcesz mieć pewność, że znasz zestaw znaków i poprawnie obsługujesz konwersje, czuję się znacznie bardziej komfortowo z datami/czasami, których atrybuty (w tym TZ) są tak precyzyjnie zdefiniowane, jak to tylko możliwe. Możesz być pewien, że dzisiaj wszystkie Twoje dane wejściowe trafiają do Twojej aplikacji już w czasie UTC, ale może się to zmienić, szczególnie jeśli znaczniki czasu są dostarczane przez użytkowników końcowych. Jeśli jest to warte, zrobiłbym wszystko, aby przekonwertować znacznik czasu w aplikacji na UTC i zapisać go w bazie danych z UTC jako strefą czasową.