2024-02-28 06:10:10.889217だめだかわらない、モデルでデフォルトの日時を timezone.localtime に設定しても、実際にはモデルが最初に読み込まれたときの日時が保存される?
おっしゃる通りです。モデルでデフォルトの日時を timezone.localtime に設定しても、実際にはモデルが最初に読み込まれたときの日時が保存されます。そのため、モデルが読み込まれた時点のローカル時刻が全てのレコードに適用されます。
その代わりに、新しいレコードが作成されるたびに現在の日時を取得して保存するように、モデルの save メソッドをオーバーライドする方法があります。
以下は修正したコードです:
python
from django.db import models
from django.utils import timezone
class Scrayping_Data(models.Model):
# 他のフィールドは省略
created_at = models.DateTimeField()
updated_at = models.DateTimeField()
def save(self, *args, **kwargs):
if not self.created_at:
self.created_at = timezone.localtime()
self.updated_at = timezone.localtime()
super().save(*args, **kwargs)
def __str__(self):
return self.product_name
このようにすると、save メソッドが呼び出されるたびに、新しいレコードが作成される場合は現在のローカル時刻が created_at に設定され、updated_at は常に現在のローカル時刻で更新されます。

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