PRO

Как фильтровать объекты: filter(), exclude(), get()?

filter() возвращает QuerySet с объектами, которые соответствуют условию, exclude() — с объектами, которые ему не соответствуют, а get() пытается вернуть ровно один объект. Если объект не найден или найдено несколько объектов, get() выбрасывает исключение.
Подробный ответ

filter()

filter() возвращает QuerySet со всеми объектами, которые соответствуют переданным условиям. Если подходящих объектов нет, вернётся пустой QuerySet, а не ошибка.

published_articles = Article.objects.filter(is_published=True)

exclude()

exclude() возвращает QuerySet с объектами, которые не соответствуют условию.

drafts = Article.objects.exclude(is_published=True)

get()

get() используют, когда ожидается ровно один объект. Если объект не найден, Django выбрасывает исключение DoesNotExist; если найдено больше одного, возникает MultipleObjectsReturned.

article = Article.objects.get(pk=1)

Примеры lookups

articles = Article.objects.filter(title__icontains='django')
recent_articles = Article.objects.filter(created_at__year=2026)

Как ответить на собеседовании

filter() возвращает подходящий набор объектов, exclude() исключает объекты по условию, а get() нужен для получения одного объекта. Для get() важно обработать ситуацию, когда объект не найден или найдено несколько записей.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге