Обновление и удаление
Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 12 из 23.
Цены меняются, а книги исчезают с полки. Чтобы изменить одну книгу, задайте значение её атрибута и вызовите save(); без save() в таблице сохранится старое значение. Чтобы изменить сразу много строк, вызовите update() для QuerySet. Этот метод выполняет один запрос UPDATE и возвращает количество изменённых строк. delete() работает так же и возвращает общее количество удалённых строк, а также количество удалённых объектов для каждой модели:
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})Оба метода действуют только на строки, входящие в QuerySet, поэтому сначала применяйте фильтр. Book.objects.update(is_read=True) помечает все книги, и ни один из методов не спрашивает подтверждения перед выполнением.
Задание
ЛегкоВ explore.py, перед последним print:
- На книгу
Duneдействует скидка: установи её цену на7.99. - Отметь все книги
Jane Austenкак прочитанные одним запросом. - Удали все детективные книги одним запросом.
Нажми «Запустить»: в консоли появится 7 books on the shelf.
Попробуйте сами
from books.models import Book
# 1. «Дюна» продаётся со скидкой: установите для неё цену 7.99.
# 2. Отметьте все книги Джейн Остин как прочитанные.
# 3. Отдайте все детективные книги.
print(Book.objects.count(), "books on the shelf")
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Модели и панель администратора
2Запросы с помощью ORM
Создание записейAll и GetФильтрация и поискПодсчёт записейСортировка записейОбновление и удалениеПотренируйтесь самостоятельно: Песочница Django