РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
483 of 818 menu

Исключение ObjectDoesNotExist

Исключение ObjectDoesNotExist выбрасывается в Django, когда метод get не находит объект по заданным условиям, или когда происходит обращение к связанному объекту, который не существует. Это исключение является базовым для всех подобных исключений моделей и наследуется от DoesNotExist. Каждая модель получает собственное исключение с таким же названием, что позволяет обрабатывать ошибки точечно.

Синтаксис

try: obj = Model.objects.get(**conditions) except Model.DoesNotExist: # Обработка отсутствия объекта

Пример . Для модели Article

Рассмотрим модель статьи и попытку получения несуществующей записи:

from myapp.models import Article try: article = Article.objects.get(id=999) print(article.title) except Article.DoesNotExist: print("Article not found")

Результат выполнения кода:

"Article not found"

Пример . Со связанными объектами

Исключение возникает при обращении к несуществующему связанному объекту через отношение OneToOne:

from myapp.models import User, Profile user = User.objects.get(id=1) try: profile = user.profile print(profile.bio) except Profile.DoesNotExist: print("Profile does not exist for this user")

Результат выполнения кода:

"Profile does not exist for this user"

Использование с get_object_or_404

Вместо ручной обработки исключения можно использовать вспомогательную функцию для выброса HTTP 404:

from django.shortcuts import get_object_or_404 from myapp.models import Article article = get_object_or_404(Article, id=999) # Если статья не найдена, будет вызвано исключение Http404

Смотрите также

  • исключение DoesNotExist,
    является базовым классом для ObjectDoesNotExist
  • исключение MultipleObjectsReturned,
    возникает при попытке получить несколько объектов через get()
  • исключение Http404,
    стандартное исключение для несуществующих страниц
  • исключение FieldError,
    возникает при ошибках в названиях полей модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить