Menu
CoddyTech

Aktualisieren und Löschen

Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 12 von 23.

Preise ändern sich und Bücher verschwinden aus dem Regal. Um ein einzelnes Buch zu ändern, setze sein Attribut und rufe save() auf; ohne save() behält die Tabelle den alten Wert bei. Um viele Zeilen auf einmal zu ändern, rufe update() für ein QuerySet auf. Es führt ein UPDATE aus und gibt zurück, wie viele Zeilen geändert wurden. delete() funktioniert genauso und gibt zurück, wie viele Zeilen insgesamt und pro Modell gelöscht wurden:

Book.objects.filter(year__lt=1900).update(price="5.00")   # 2
Book.objects.filter(price__gt=14).delete()   # (1, {'books.Book': 1})

Beide wirken sich genau auf die Zeilen des QuerySets aus, also filtere zuerst. Book.objects.update(is_read=True) markiert jedes Buch, und keine der beiden Methoden fragt vor der Ausführung nach.

challenge icon

Aufgabe

Einfach

Füge in explore.py oberhalb des letzten print Folgendes ein:

  1. Dune ist im Sonderangebot: Setze den Preis auf 7.99.
  2. Markiere alle Bücher von Jane Austen in einer einzigen Abfrage als gelesen.
  3. Lösche alle Kriminalromane in einer einzigen Abfrage.

Drücke auf „Ausführen“: In der Konsole steht 7 books on the shelf.

Probier es selbst

from books.models import Book

# 1. Dune ist im Angebot: Setze den Preis auf 7.99.

# 2. Markiere jedes Buch von Jane Austen als gelesen.

# 3. Verschenke jedes Krimibuch.

print(Book.objects.count(), "books on the shelf")
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