All и Get
Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 8 из 23.
Прежде чем страница сможет показать книгу, ваш код должен прочитать её. Book.objects.all() возвращает QuerySet — похожий на список объект, по которому можно пройтись в цикле; каждый элемент — это Book, поля которого доступны как атрибуты. get() извлекает ровно одну строку:
for book in Book.objects.all():
print(book.author, book.year)
emma = Book.objects.get(title="Emma")
print(emma.year) # 1815get() ожидает одно совпадение. Если совпадений нет, возникает исключение Book.DoesNotExist; если их несколько — Book.MultipleObjectsReturned. Перехватывать их можно, как и любые другие исключения. Здесь две книги написаны Джейн Остин:
try:
Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
print("More than one")Если исключение не перехватить, оно остановит выполнение скрипта на этой строке.
Задание
ЛегкоПерепиши explore.py:
- Выведи название каждой книги, по одному в строке.
- Получи
Duneи выведиDune costsи её цену:Dune costs 9.99. - Найди
Ulysses, которой нет на полке, и выведиUlysses is not on the shelfвместо аварийного завершения программы.
Нажми «Играть»: в консоли появятся девять названий, а затем два предложения.
Попробуйте сами
from books.models import Book
# 1. Выведите название каждой книги на отдельной строке.
# 2. Получите Dune и выведите её цену.
# 3. Найдите Ulysses.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Модели и панель администратора
Потренируйтесь самостоятельно: Песочница Django