Ce que j'ai compris dans les attributs du champ Django
models est
auto_now
- met à jour la valeur du champ à l'heure et à la date actuelles à chaque appel de Model.save ().auto_now_add
- met à jour la valeur avec l'heure et la date de création de l'enregistrement.Ma question est de savoir si un modèle déposé contient à la fois le auto_now
et auto_now_add
défini sur True? Que se passe-t-il dans ce cas?
auto_now
a priorité (évidemment, car il met à jour le champ à chaque fois, tandis que auto_now_add
mises à jour sur la création uniquement). Voici le code pour DateField.pre_save
méthode:
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)
Comme vous pouvez le voir, si auto_now
est défini ou les deux auto_now_add
est défini et l'objet est nouveau, le champ recevra le jour en cours.
De même pour 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)