Alle und Abrufen
Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 8 von 23.
Bevor eine Seite ein Buch anzeigen kann, muss dein Code es wieder auslesen. Book.objects.all() gibt ein QuerySet zurück, ein listenähnliches Objekt, über das du iterieren kannst; jedes Element ist ein Book-Objekt, dessen Felder als Attribute verfügbar sind. get() ruft genau eine Zeile ab:
for book in Book.objects.all():
print(book.author, book.year)
emma = Book.objects.get(title="Emma")
print(emma.year) # 1815get() erwartet genau einen Treffer. Gibt es keinen Treffer, wird Book.DoesNotExist ausgelöst; bei mehreren Treffern wird Book.MultipleObjectsReturned ausgelöst. Diese Ausnahmen fängst du wie jede andere Ausnahme ab. Zwei Bücher hier stammen von Jane Austen:
try:
Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
print("More than one")Wird die Ausnahme nicht abgefangen, bricht sie das Skript an dieser Zeile ab.
Aufgabe
EinfachSchreibe explore.py um:
- Gib den Titel jedes Buches aus, einen pro Zeile.
- Rufe
Duneab und gibDune costssowie den Preis aus:Dune costs 9.99. - Suche nach
Ulysses, das nicht im Bücherregal steht, und gib stattdessenUlysses is not on the shelfaus, ohne dass das Programm abstürzt.
Klicke auf „Ausführen“. Die Konsole listet die neun Titel und danach die beiden Sätze auf.
Probier es selbst
from books.models import Book
# 1. Gib den Titel jedes Buches aus, jeweils einen pro Zeile.
# 2. Rufe Dune ab und gib den Preis aus.
# 3. Suche nach Ulysses.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Modelle und Admin-Bereich
Übe selbstständig: Django-Playground