Метод get

Метод get применяется к QuerySet и возвращает одну запись, соответствующую переданным условиям. Если записей, удовлетворяющих условиям, нет, выбрасывается исключение DoesNotExist. Если найдено более одной записи, выбрасывается исключение MultipleObjectsReturned. Метод полезен, когда требуется получить конкретный объект по уникальному полю, например, по первичному ключу.

Синтаксис

pythonModel.objects.get(**conditions)

Пример

Давайте получим статью с идентификатором 1:

pythonfrom myapp.models import Article

article = Article.objects.get(id=1)
print(article.title)

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

python"Первая статья"

Пример

Давайте получим статью по заголовку (уникальное поле):

pythonfrom myapp.models import Article

article = Article.objects.get(title="Django Basics")
print(article.id, article.status)

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

python"5 published"

Пример

Давайте получим статью по двум условиям:

pythonfrom myapp.models import Article

article = Article.objects.get(
  status='published',
  category__name='Python'
)
print(article.title)

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

python"Работа с методами QuerySet"

Обработка исключений

Важно обрабатывать исключения, так как метод get может их выбрасывать:

pythonfrom myapp.models import Article
from django.core.exceptions import ObjectDoesNotExist

try:
  article = Article.objects.get(id=999)
  print(article.title)
except ObjectDoesNotExist:
  print("Статья не найдена")

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

python"Статья не найдена"

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

  • метод filter,
    который возвращает все записи, соответствующие условиям
  • метод exclude,
    который исключает записи из QuerySet
  • метод first,
    который возвращает первый объект из QuerySet
  • метод last,
    который возвращает последний объект из QuerySet