Menu
CoddyTech

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)   # 1815

get() ожидает одно совпадение. Если совпадений нет, возникает исключение Book.DoesNotExist; если их несколько — Book.MultipleObjectsReturned. Перехватывать их можно, как и любые другие исключения. Здесь две книги написаны Джейн Остин:

try:
    Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
    print("More than one")

Если исключение не перехватить, оно остановит выполнение скрипта на этой строке.

challenge icon

Задание

Легко

Перепиши explore.py:

  1. Выведи название каждой книги, по одному в строке.
  2. Получи Dune и выведи Dune costs и её цену: Dune costs 9.99.
  3. Найди Ulysses, которой нет на полке, и выведи Ulysses is not on the shelf вместо аварийного завершения программы.

Нажми «Играть»: в консоли появятся девять названий, а затем два предложения.

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

from books.models import Book

# 1. Выведите название каждой книги на отдельной строке.

# 2. Получите Dune и выведите её цену.

# 3. Найдите Ulysses.
quiz iconПроверьте себя

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

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

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