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.
Aufgabe
EinfachIn explore.py, oberhalb des letzten print:
Duneist im Angebot: Setze den Preis auf7.99.- Markiere alle Bücher von
Jane Austenmit einer einzigen Abfrage als gelesen. - 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")
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