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. Их перехватывают так же, как любые другие исключения. Здесь две книги написаны Jane Austen:
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вместо того, чтобы завершиться с ошибкой.
Нажмите Run. В консоли отобразятся девять названий, а затем два предложения.
Попробуйте сами
from books.models import Book
# 1. Выведите название каждой книги, по одному в строке.
# 2. Найдите Dune и выведите её цену.
# 3. Найдите Ulysses.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Модели и панель администратора
Потренируйтесь самостоятельно: Песочница Django