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 zuerst wieder auslesen. Book.objects.all() gibt ein QuerySet zurück, ein listenähnliches Objekt, über das du iterieren kannst; jedes Element ist ein Book, dessen Felder Attribute 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, und du fängst diese Ausnahmen wie jede andere ab. Hier sind zwei Bücher von Jane Austen:
try:
Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
print("More than one")Wird die Ausnahme nicht abgefangen, stoppt sie das Skript an dieser Zeile.
Aufgabe
EinfachSchreibe explore.py um:
- Gib die Titel aller Bücher aus, jeweils einen pro Zeile.
- Rufe
Duneab und gibDune costssowie den Preis aus:Dune costs 9.99. - Suche nach
Ulysses, das nicht im Regal steht, und gib stattdessenUlysses is not on the shelfaus, ohne dass das Programm abstürzt.
Drücke auf „Ausführen“: Die Konsole listet die neun Titel und anschließend 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