"created_at"と "updated_at"の2つのフィールドがあるモデル "Member"があります。もともと、それらは以下のように定義された :ローカルのdjangoにレコードの作成時刻と更新時刻が格納されていません
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now_add=True, null=True)
私のsettings.pyは真USE_TZ =とTIME_ZONE = "アメリカ/ニューヨーク" を持っています。
ユーザーが選択したタイムゾーンを有効にするために定義されたカスタムミドルウェアがあります。私はメンバーのレコードを更新し、その代わりに、同じUTCタイムゾーンを示す、 updated_atの時間をチェックしたときに、今
created_at = models.DateTimeField(default= lambda: timezone.localtime(timezone.now()), null=True)
updated_at = models.DateTimeField(default= lambda: timezone.localtime(timezone.now()), null=True)
:
current_tz = pytz.timezone("<user defined timezone>")
timezone.activate(current_tz)
その後、私は、ユーザーのlocaltimeを格納するフィールドを更新しますユーザーのローカル時間。
は常にUTCでDBの日時値を格納するか、私はあなたのすべての要件がUSE_TZ = True
に焦点を当てる必要があり、ここで
このコードでは、ユーザーではなくサーバーのlocaltimeのみが使用されます。 –
私は自分の質問を編集して、ユーザーが選択したタイムゾーンごとにタイムゾーンをアクティブにするためのミドルウェアについて言及しました。では、サーバーではなくユーザーのローカルタイムを使用する方法は? – user2722127
十分に公正。しかし、これはまだ悪い考えのようです。なぜあなたは明示的に[docs](https://docs.djangoproject.com/en/1.11/topics/i18n/timezones/)に推奨されているように、現地時間を保存したいのですか? - UTCの保存と出力時の変換? –