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

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

challenge icon

Aufgabe

Einfach

Schreibe explore.py um:

  1. Gib die Titel aller Bücher aus, jeweils 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 Regal steht, und gib stattdessen Ulysses is not on the shelf aus, 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.
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