0
1

More than 3 years have passed since last update.

【django】models.DateTimeFieldに現在の時刻(timezone.now)を格納するときデータベース内の値が現在時刻にならない問題

Posted at

models.DateTimeFieldに現在の時刻(timezone.now)を格納するときデータベース内の値が現在時刻にならない問題の解決に1時間くらい費やしました。

なので、その解決法?について残しておきます。

models.DateTimeFieldに現在の時刻を入れたい場合は下の記事を参考にしてみてください。

[Django]モデルmodels.DateTimeFieldに現在の時間を挿入する方法

結論

データベース内の値は、現在時刻になっている必要はないみたいですね。(UTCになっているから)

そして、表示するときにTIME_ZONEで設定した地域の時刻に自動的に変換されるようです。

では、いつ変換されるのか

  • テンプレートファイル(htmlファイルなど)に渡して表示するとき
  • views.pyでtimezone.localtime(timezone.now())したとき

時刻を表示したいだけならば特に何もしなくても自動的に表示されるので楽ちんです。

ただ、「ブログとかで書いた記事を指定した時刻に投稿したい」とか時間指定で何かするものであるなら、views.pyであらかじめtimezone.localtime(timezone.now())で変換して、その変換した値をデータベースに格納する必要があります。(そうしないと9時間遅れて投稿されます)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1