Встречается на собеседованиях • сегодня

Приходилось ли использовать подзапросы (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.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы