Djangoのpostgresのデータ型は、文字列リテラルのtimestamp with time zone
にマップされます。 、そしてそのタイプを変更するオプションはないようです。
私の知る限り、次の3つのオプションがあります。
-
rawを実行するためにDjangoのフックを利用しますcreatetableステートメントの後のsql 。これを行うには、
sql
というディレクトリを作成します アプリ内とそのディレクトリ内のmymodel.postgres_psycopg2.sql
というファイル 。そこにaltertableステートメントを配置します。 -
カスタムフィールドを作成して、適切と思われるタイムスタンプフィールドの修飾子を定義します。 「
カスタムモデルフィールドの作成」を参照してください。 "。 -
djangoフィールドはそのままにして、アプリケーションでタイムゾーン変換を実行し、正しい時間を通過していることを絶対に確認します。
私の個人的なデータ整合性の好みは#3です。文字セットを常に理解し、変換を適切に処理していることを常に確認したい文字エンコードの場合と同様に、属性(TZを含む)が可能な限り正確に定義されている日付/時刻の方がはるかに快適です。今日、すべての入力がすでにUTCでアプリに送信されていることは確かかもしれませんが、特にタイムスタンプがエンドユーザーによって提供されている場合は、変更される可能性があります。その価値については、さらに一歩進んで、アプリのタイムスタンプをUTCに変換し、UTCをタイムゾーンとしてDBに保存します。