Trier les lignes
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 11 sur 23.
Le livre le moins cher, le plus récent, tous les titres du plus ancien au plus récent : chacune de ces questions porte sur l’ordre. order_by() trie un QuerySet selon un champ, tout comme ordering dans Meta le fait pour tous les objets, et un signe moins trie du plus grand au plus petit. first() renvoie la première ligne, ou None s’il n’y en a aucune, donc, contrairement à get(), il ne lève jamais d’exception :
Book.objects.order_by("-year").first() # <Book: SPQR by Mary Beard>
Book.objects.order_by("-price").values_list("author", flat=True)
# <QuerySet ['Mary Beard', 'Umberto Eco', ...]>values_list() ignore les objets Book et renvoie les valeurs d’un champ. Sans flat=True, chaque valeur est renvoyée dans un tuple d’un seul élément, comme ('Mary Beard',).
Défi
MoyenRéécris explore.py pour afficher deux lignes :
Cheapest:et le titre du livre le moins cher.Titles by year:et une liste de tous les titres, du livre le plus ancien au plus récent.
Appuie sur Run. La console affiche Cheapest: Pride and Prejudice et Titles by year: ['Pride and Prejudice', 'Emma', ...].
Essayez vous-même
from books.models import Book
# 1. Le moins cher : le titre du livre le moins cher
# 2. Titres par année : tous les titres, du livre le plus ancien au plus récent, sous forme de liste
Toutes les leçons de Modèles et interface d’administration
2Interroger avec l’ORM
Créer des lignesAll et GetFiltres et recherchesCompter les lignesTrier les lignesMettre à jour et supprimer3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django