Aktualizowanie i usuwanie
Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 12 z 23.
Ceny się zmieniają, a książki znikają z półki. Aby zmienić jedną książkę, ustaw jej atrybut i wywołaj save(); bez save() tabela zachowa starą wartość. Aby zmienić wiele wierszy naraz, wywołaj update() na QuerySet. Wykonuje jedno UPDATE i zwraca liczbę zmienionych wierszy. delete() działa tak samo i zwraca łączną liczbę usuniętych wierszy oraz liczbę wierszy usuniętych dla każdego modelu:
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})Obie metody działają dokładnie na wierszach z QuerySet, więc najpierw użyj filtra. Book.objects.update(is_read=True) oznacza każdą książkę jako przeczytaną, a żadna z tych metod nie pyta o potwierdzenie przed wykonaniem działania.
Wyzwanie
ŁatwyW pliku explore.py, nad ostatnim wywołaniem print:
Dunejest w promocji: ustaw cenę na7.99.- Oznacz wszystkie książki autorstwa
Jane Austenjako przeczytane w jednym zapytaniu. - Usuń wszystkie książki z gatunku kryminał w jednym zapytaniu.
Naciśnij „Uruchom”: w konsoli pojawi się 7 books on the shelf.
Spróbuj swoich sił
from books.models import Book
# 1. Dune jest w promocji: ustaw jej cenę na 7.99.
# 2. Oznacz każdą książkę Jane Austen jako przeczytaną.
# 3. Oddaj wszystkie książki kryminalne.
print(Book.objects.count(), "books on the shelf")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Modele i panel administracyjny
2Odpytowanie za pomocą ORM
Tworzenie wierszyWszystkie i pobieranieFiltrowanie i wyszukiwanieLiczenie wierszySortowanie wierszyAktualizowanie i usuwaniePoćwicz samodzielnie: Edytor online Django