Trier les lignes
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 11 sur 23.
Trouver le livre le moins cher, le plus récent ou tous les titres du plus ancien au plus récent implique de commencer par trier les livres. order_by() trie un QuerySet selon un champ, comme le fait ordering dans Meta pour tous les livres, 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 déclenche 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("author", flat=True) ignore les objets Book et renvoie les valeurs elles-mêmes : 'Mary Beard'. Sans flat=True, chaque valeur est renvoyée dans un tuple à un seul élément : ('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. Affiche la liste elle-même.
Appuie sur « Jouer » : la console affiche Cheapest: Pride and Prejudice, puis Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].
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