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.
Aufgabe
EinfachFüge in explore.py oberhalb des letzten print Folgendes ein:
Duneist im Sonderangebot: Setze den Preis auf7.99.- Markiere alle Bücher von
Jane Austenin einer einzigen Abfrage als gelesen. - 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")
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
2Abfragen mit dem ORM
Datensätze erstellenAlle und AbrufenFiltern und SuchabfragenDatensätze zählenDatensätze sortierenAktualisieren und LöschenÜbe selbstständig: Django-Playground