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.
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!
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