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

Какой самый сложный queryset писал в Django

Самый сложный QuerySet обычно связан с оптимизацией сложных запросов, включающих аннотации, агрегации, подзапросы или Prefetch. Например, запрос для подсчета комментариев к постам с фильтрацией и сортировкой:

python
from django.db.models import Count, Subquery, OuterRef
from blog.models import Post, Comment

# Подсчет активных комментариев для каждого поста с аннотацией
posts = Post.objects.annotate(
    active_comments_count=Count(
        'comments',
        filter=Q(comments__is_active=True)
    ),
    last_comment_date=Subquery(
        Comment.objects.filter(
            post=OuterRef('pk'),
            is_active=True
        ).order_by('-created_at').values('created_at')[:1]
    )
).select_related('author').prefetch_related(
    Prefetch(
        'comments',
        queryset=Comment.objects.filter(is_active=True),
        to_attr='active_comments'
    )
).order_by('-last_comment_date')

Ключевые сложности:

  1. Аннотация с фильтром (active_comments_count)
  2. Подзапрос для получения даты последнего комментария (Subquery)
  3. Оптимизация через select_related и Prefetch с фильтрацией
  4. Сортировка по вычисляемому полю

Такой запрос заменяет несколько отдельных запросов и N+1 проблему, но требует глубокого понимания ORM.

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

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

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

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