[PYTHON] Auto_now de Django peut ne pas être mis à jour

Le modèle de Django a DateTimeField comme argument

--ʻAuto_now_add: Entrez l'heure actuelle lors de la création --ʻAuto_add: mise à jour avec l'heure actuelle lors de l'enregistrement

Il existe une fonction pratique appelée. Souvent

class User(models.Model):
     name = models.CharField()
     created = models.DateTimeField(
        auto_now_add=True
     )
     updated = models.DateTimeField(
        auto_now=True
     )

Il est défini et utilisé sous la forme de.

Mis à jour avec auto_now

Avec un modèle avec un tel champ

user = User.objects.create(name="kasajei")
print(user.created)
>>>Heure actuelle
print(user.updated)
>>>Heure actuelle
user.name = "kasajei2"
user.save()
print(user.updated)
>>>Gain de temps

Ensuite, définissez l'heure actuelle sur mise à jour, et Django la mettra à jour avec une valeur sans enregistrer. Pratique!

Auto_now, mais pas mis à jour

Cependant, parfois, si je pensais qu'il ne serait pas mis à jour, il semble qu'il ne le sera pas dans le cas de la spécification de l'argument avec ʻupdate` comme suit.

user.name="kasajei3"
user.save(update_fields="name")
print(user.updated)
>>>Pas à jour! !!

Autre,

User.objects.filter(name="kasajei").update(name="kasajei2")
user = User.objects.get(name="kasajei2")
print(user.updated)
>>>Pas à jour! !!

Etc. ne sera pas mis à jour!

Comme vous pouvez le voir dans le SQL correctement émis, j'ai trop fait confiance à ʻauto_now` et je ne l'ai pas remarqué pendant un moment.

Puisqu'il s'agit de ʻauto_now`, je me demande si vous pouvez le mettre à jour, mais qu'en est-il?

Recommended Posts

Auto_now de Django peut ne pas être mis à jour
[django] Quand le modèle modifié est mis à jour et quand il n'est pas mis à jour
Choix non mis à jour dans le champ à choix multiples de Django
PyQtGraph peut ne pas être disponible dans l'interpréteur.
L'icône Qiitadon ne peut pas être modifiée par l'API