Django
modelsフィールドの属性で理解したことは
auto_now
-Model.save()が呼び出されるたびに、フィールドの値を現在の日時に更新します。auto_now_add
-レコードの作成日時で値を更新します。私の質問は、モデルに提出されたファイルにauto_now
およびauto_now_add
Trueに設定しますか?その場合はどうなりますか?
auto_now
が優先されます(明らかに、毎回フィールドを更新しますが、auto_now_add
は作成時にのみ更新されるため)。 DateField.pre_save
メソッドのコードは次のとおりです。
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = datetime.date.today()
setattr(model_instance, self.attname, value)
return value
else:
return super().pre_save(model_instance, add)
ご覧のとおり、auto_now
が設定されているか、auto_now_add
が設定されていて、オブジェクトが新しい場合、フィールドは現在の日付を受け取ります。
DateTimeField.pre_save
でも同じです:
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = timezone.now()
setattr(model_instance, self.attname, value)
return value
else:
return super().pre_save(model_instance, add)