Menu
CoddyTech

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',).

challenge icon

Défi

Moyen

Réécris explore.py pour afficher deux lignes :

  1. Cheapest: et le titre du livre le moins cher.
  2. 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

Entraînez-vous par vous-même : Playground Django