Menu
CoddyTech

All et Get

Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 8 sur 23.

Avant qu’une page puisse afficher un livre, votre code doit le lire. Book.objects.all() renvoie un QuerySet, un objet semblable à une liste que vous pouvez parcourir ; chaque élément est un Book dont les champs sont des attributs. get() récupère exactement une ligne :

for book in Book.objects.all():
    print(book.author, book.year)

emma = Book.objects.get(title="Emma")
print(emma.year)   # 1815

get() attend une seule correspondance. Aucune correspondance déclenche Book.DoesNotExist, plusieurs déclenchent Book.MultipleObjectsReturned, et vous les interceptez comme n’importe quelle exception. Deux livres ici sont de Jane Austen :

try:
    Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
    print("More than one")

Si elle n’est pas interceptée, l’exception arrête le script à cette ligne.

challenge icon

Défi

Facile

Réécris explore.py :

  1. Affiche le titre de chaque livre, un par ligne.
  2. Récupère Dune et affiche Dune costs ainsi que son prix : Dune costs 9.99.
  3. Recherche Ulysses, qui ne se trouve pas sur l’étagère, et affiche Ulysses is not on the shelf au lieu de provoquer une erreur.

Appuie sur « Jouer » : la Console affiche les neuf titres, puis les deux phrases.

Essayez vous-même

from books.models import Book

# 1. Affiche le titre de chaque livre, un par ligne.

# 2. Récupère Dune et affiche son prix.

# 3. Recherche Ulysses.
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Modèles et interface d’administration

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