MYSQLに保存するのをオフセットして保存したい
Djangoの設定では、データベースにUTC時間を保存するようになっています。しかし、時刻をデータベースに保存する際にUTCオフセットを考慮してオフセットを除外することは可能です。
そのためには、DjangoのモデルのDateTimeFieldに対して、auto_now_addやauto_nowオプションを使用せず、手動で時刻を設定する方法を選択することができます。
例えば、次のようにして手動で時刻を設定し、UTCオフセットを除外してからデータベースに保存することができます。
python
from django.db import models from django.utils import timezone class MyModel(models.Model): created_at = models.DateTimeField() updated_at = models.DateTimeField() def save(self, *args, **kwargs): if not self.created_at: self.created_at = timezone.now() # モデルが保存される際に、created_atが未設定の場合、現在の日時を設定する self.updated_at = timezone.now() # いつでも更新日時を更新する super().save(*args, **kwargs)
このようにすれば、データベースに保存される時刻はUTC時間であり、UTCオフセットが含まれますが、そのオフセットを除外してから保存されます。この場合、Djangoのタイムゾーン設定に関係なく、データベースにはUTC時間が保存されますが、オフセットは保存されません。

ディスカッション
コメント一覧
まだ、コメントがありません