[PYTHON] Djangos auto_now wird möglicherweise nicht aktualisiert

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.

Aktualisiert mit auto_now

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!

Auto_now, aber nicht aktualisiert

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

Djangos auto_now wird möglicherweise nicht aktualisiert
[django] Wenn das geänderte Modell aktualisiert wird und wenn es nicht aktualisiert wird
Auswahlmöglichkeiten im Multiple-Choice-Feld von Django nicht aktualisiert
PyQtGraph ist möglicherweise nicht im Interpreter verfügbar.
Das Qiitadon-Symbol darf nicht von der API geändert werden