【Django RestFrameWork】auto_now_addで出力される時刻がずれている問題と解決方法

Django
 

環境

  • Python3.8
  • Django 3.1.3
  • Django RestFrameWork 3.12.2

問題

以下のように定義されたmodelにてデータを入力すると、その入力自体は成功するが、created_atに登録されている時刻がずれている

Ex)本日の時刻は2022/04/10なのにcreated_atに登録された時刻は2022/04/09になってしまい、差異が発生している。

class VendorInfo(models.Model):
    address = models.CharField(max_length=200)
    longitude = models.DecimalField(max_digits=17, decimal_places=14)
    latitude = models.DecimalField(max_digits=17, decimal_places=14)
    created_at = models.DateField(auto_now_add=True)
    
    def __str__(self):
        return self.address

auto_now_add 新規登録の時のみ時刻を更新

auto_now データを更新するタイミングで時刻を更新

解決方法

初期設定だとタイムゾーンが違うことにより時刻に差異が発生することがあります。

setting.pyにて以下のようにタイムゾーンを設定してあげるとcreated_atが正しく登録されるようになるはずです。

setting.py
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'

これでも変わらない時はサーバーを再起動してみたりすると、登録時刻が正しく更新されるはずです。

おわり

コメント

タイトルとURLをコピーしました