J'essaye d'obtenir le dernier objet modèle Django mais je n'arrive pas à réussir.
Aucun de ces éléments ne fonctionne:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
J'essaye d'obtenir le dernier objet modèle Django mais je n'arrive pas à réussir.
Aucun de ces éléments ne fonctionne:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. J'espère que cela aide.
Réponses:
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' field_name
argument à earliest() or latest()
. Django utilisera le champ spécifié get_latest_by
par défaut.
Utilisez le dernier ():
ModelName.objects.last()
en utilisant la dernière ():
ModelName.objects.latest('id')
latest
est vraiment conçu pour fonctionner avec les champs de date (cela fonctionne probablement aussi avec d'autres types à ordre total, mais pas sûr). Et la seule façon de l'utiliser sans spécifier le nom du champ est de définir l' get_latest_by
attribut meta, comme mentionné ici .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
est la bonne solution
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]