Menu
CoddyTech

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)   # 1815

get() 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.

challenge icon

Aufgabe

Einfach

Schreibe explore.py um:

  1. Gib den Titel jedes Buches aus, einen pro Zeile.
  2. Rufe Dune ab und gib Dune costs sowie den Preis aus: Dune costs 9.99.
  3. Suche nach Ulysses, das nicht im Bücherregal steht, und gib stattdessen Ulysses is not on the shelf aus, 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.
quiz iconTeste dich selbst

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