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 zachowuje 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 liczbę usuniętych wierszy — łącznie i 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ę, a żadna z tych metod nie pyta o potwierdzenie przed wykonaniem działania.
Wyzwanie
ŁatwyW pliku explore.py, powyżej ostatniego print:
- Książka
Dunejest w promocji: ustaw jej cenę na7.99. - Oznacz wszystkie książki autorstwa
Jane Austenjako przeczytane, używając jednego zapytania. - Usuń wszystkie książki z gatunku mystery, używając jednego zapytania.
Naciśnij Run. Konsola wyświetli 7 books on the shelf, a karta Data pokaże książkę Dune z ceną 7.99 i brak książek z gatunku mystery.
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ę autorstwa 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