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. Их перехватывают так же, как любые другие исключения. Здесь две книги написаны Jane Austen:

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 вместо того, чтобы завершиться с ошибкой.

Нажмите Run. В консоли отобразятся девять названий, а затем два предложения.

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

from books.models import Book

# 1. Выведите название каждой книги, по одному в строке.

# 2. Найдите Dune и выведите её цену.

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

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

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

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