Obtenir le dernier enregistrement dans un ensemble de requêtes

Comment puis-je récupérer le dernier enregistrement dans un certain jeu de requête?

Django Doc :

latest(field_name=None) renvoie le dernier object de la table, par date, en utilisant le nom de champ fourni comme champ de date.

Cet exemple renvoie la dernière entrée de la table, en fonction du champ pub_date :

 Entry.objects.latest('pub_date') 

Django> = 1.6

Ajout des méthodes QuerySet first () et last () qui sont des méthodes pratiques renvoyant le premier ou le dernier object correspondant aux filtres. Renvoie Aucun s’il n’y a aucun object correspondant.

La façon la plus simple de le faire est:

 books.objects.all().last() 

Vous l’utilisez également pour obtenir la première entrée comme ceci:

 books.objects.all().first() 

Pour obtenir le premier object:

 ModelName.objects.first() 

Pour obtenir les derniers objects:

 ModelName.objects.last() 

Vous pouvez utiliser le filtre

 ModelName.objects.filter(name='simple').first() 

Cela fonctionne pour moi.

Lorsque le jeu de requête est déjà épuisé, vous pouvez le faire pour éviter un autre indice de firebase database –

 last = queryset[len(queryset) - 1] if queryset else None 

N’utilisez pas try...except...
Django ne lance pas IndexError dans ce cas.
Il jette AssertionError ou ProgrammingError (quand vous lancez python avec l’option -O)

Si vous utilisez django 1.6 et plus, c’est beaucoup plus facile maintenant que le nouvel API a été introduit –

 Model.object.earliest() 

Il donnera dernière () en sens inverse.

ps – Je connais sa vieille question, je poste comme si aller de l’avant sur cette question, ils apprennent à connaître cette nouvelle fonctionnalité et ne se retrouvent pas avec l’ancienne méthode.

Le moyen le plus simple, sans avoir à vous soucier de l’ordre actuel, est de convertir le QuerySet en une liste afin de pouvoir utiliser l’indexation négative normale de Python. Ainsi:

 list(User.objects.all())[-1]