J'essaie d'obtenir le dernier objet modèle Django mais ne semble pas réussir.
Ni l'un ni l'autre ne fonctionnent:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Voir la documentation de Django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Vous devez spécifier un champ dans latest (). par exemple.
obj= Model.objects.filter(testfield=12).latest('testfield')
Ou si la méta de votre modèle spécifie get_latest_by, vous pouvez laisser l’argument field_name
Dans earliest() or latest()
. Django utilisera par défaut le champ spécifié dans get_latest_by
.
latest
est vraiment conçu pour fonctionner avec les champs de date (il fonctionne probablement aussi avec les autres types à ordre total, mais pas sûr). Et le seul moyen de l’utiliser sans spécifier le nom du champ est de définir le paramètre get_latest_by
méta attribut, comme mentionné ici .
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
est la bonne solution