Menu
CoddyTech

Обновление и удаление

Часть раздела Модели и панель администратора путешествия по 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) помечает все книги, и ни один из методов не спрашивает подтверждения перед выполнением.

challenge icon

Задание

Легко

В explore.py, перед последним print:

  1. На книгу Dune действует скидка: установи её цену на 7.99.
  2. Отметь все книги Jane Austen как прочитанные одним запросом.
  3. Удали все детективные книги одним запросом.

Нажми «Запустить»: в консоли появится 7 books on the shelf.

Попробуйте сами

from books.models import Book

# 1. «Дюна» продаётся со скидкой: установите для неё цену 7.99.

# 2. Отметьте все книги Джейн Остин как прочитанные.

# 3. Отдайте все детективные книги.

print(Book.objects.count(), "books on the shelf")
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django