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

Был ли опыт работы с подзапросами (Subquery, Exists, F, Q) в Django ORM

Да, работал с подзапросами в Django ORM.

Subquery — полезен для вложенных запросов. Например, выборка последнего комментария для каждого поста:

python
from django.db.models import OuterRef, Subquery
comments = Comment.objects.filter(post=OuterRef('pk')).order_by('-created_at')
posts = Post.objects.annotate(
    last_comment_text=Subquery(comments.values('text')[:1])
)

Exists — проверяет наличие связанных записей. Например, посты с комментариями:

python
from django.db.models import Exists
posts = Post.objects.annotate(
    has_comments=Exists(Comment.objects.filter(post=OuterRef('pk')))
).filter(has_comments=True)

F() — для сравнения полей одной модели:

python
from django.db.models import F
Product.objects.filter(price__gt=F('discounted_price'))

Q() — для сложных условий:

python
from django.db.models import Q
User.objects.filter(Q(is_active=True) | Q(last_login__gte=timezone.now() - timedelta(days=30)))

Подзапросы помогают избегать N+1 проблем и оптимизировать запросы.

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

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

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

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