Что такое Subquery в Django

Python Middle Без компании
Что такое Subquery в Django
Ответы
Subquery в Django — это способ выполнения вложенных запросов к базе данных внутри основного запроса. Он позволяет использовать результат одного запроса как часть другого, например, в фильтрах или аннотациях. Пример использования Subquery для аннотации: ``` from django.db.models import OuterRef, Subquery from app.models import Post, Comment # Получить последний комментарий для каждого поста latest_comments = Comment.objects.filter( post=OuterRef('pk') ).order_by('-created_at') posts = Post.objects.annotate( last_comment_text=Subquery(latest_comments.values('text')[:1]) ) ``` Ключевые моменты: - Используется с OuterRef для ссылки на поле внешнего запроса - Должен возвращать только одно значение (обычно с [:1]) - Выполняется на уровне БД, без дополнительных запросов - Полезен для сложных агрегаций и фильтраций Subquery особенно эффективен при работе с большими наборами данных, так как выполняется одним SQL-запросом.