Djangos Modell hat "DateTimeField" als Argument
--auto_now_add
: Geben Sie die aktuelle Uhrzeit beim Erstellen ein
--auto_add
: Beim Speichern mit der aktuellen Zeit aktualisieren
Es gibt eine praktische Funktion namens. Häufig
class User(models.Model):
name = models.CharField()
created = models.DateTimeField(
auto_now_add=True
)
updated = models.DateTimeField(
auto_now=True
)
Es wird in Form von definiert und verwendet.
Mit einem Modell mit einem solchen Feld
user = User.objects.create(name="kasajei")
print(user.created)
>>>Aktuelle Uhrzeit
print(user.updated)
>>>Aktuelle Uhrzeit
user.name = "kasajei2"
user.save()
print(user.updated)
>>>Zeit gespart
Stellen Sie dann die aktuelle Zeit auf "Aktualisiert" ein, und Django aktualisiert sie mit einem Wert, ohne sie zu speichern. Praktisch!
Wenn ich jedoch dachte, dass es nicht aktualisiert werden würde, scheint es manchmal, dass es nicht aktualisiert wird, wenn das Argument wie folgt mit "update" angegeben wird.
user.name="kasajei3"
user.save(update_fields="name")
print(user.updated)
>>>Nicht aktualisiert! !!
Andere,
User.objects.filter(name="kasajei").update(name="kasajei2")
user = User.objects.get(name="kasajei2")
print(user.updated)
>>>Nicht aktualisiert! !!
Usw. wird nicht aktualisiert!
Wie Sie aus dem ordnungsgemäß ausgegebenen SQL ersehen können, habe ich "auto_now" zu sehr vertraut und es eine Weile nicht bemerkt.
Es ist "auto_now", also frage ich mich, ob es in Ordnung ist, es zu aktualisieren, aber was ist damit?
Recommended Posts