Встречается на собеседованиях • сегодня
Приходилось ли использовать подзапросы (Subquery, Exists, F, Q) в Django ORM
Да, подзапросы в Django ORM — мощный инструмент для сложных запросов.
Subquery — полезен для аннотаций:
python
from django.db.models import OuterRef, Subquery
latest_comments = Comment.objects.filter(
post=OuterRef('pk')
).order_by('-created_at')
posts = Post.objects.annotate(
latest_comment_text=Subquery(latest_comments.values('text')[:1])
)Exists — проверяет наличие связанных объектов:
python
from django.db.models import Exists
active_users = User.objects.filter(
Exists(Order.objects.filter(user=OuterRef('pk'), status='paid'))
)F() — для операций с полями внутри одной таблицы:
python
from django.db.models import F
Product.objects.update(price=F('price') * 1.1) # Увеличить цену на 10%Q() — для сложных условий:
python
from django.db.models import Q
User.objects.filter(
Q(username__startswith='a') | Q(email__contains='example.com')
)Подзапросы помогают избегать множественных запросов к БД и оптимизируют performance.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы