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 Buch zu ändern, setze sein Attribut und rufe save() auf; ohne save() behält die Tabelle den alten Wert. 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 Methoden wirken sich genau auf die Zeilen des QuerySets aus, filtere also 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

In explore.py, oberhalb des letzten print:

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

Klicke auf „Run“. In der Konsole steht 7 books on the shelf, und im Tab „Data“ wird Dune mit dem Preis 7.99 angezeigt, ohne Mystery-Bücher.

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