環境
- 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'
これでも変わらない時はサーバーを再起動してみたりすると、登録時刻が正しく更新されるはずです。
おわり
コメント