Back to questions
Junior — Middle
72
Какой самый сложный запрос к базе данных вам приходилось реализовать в Django?
Answer from AI
sobes.tech AI
В Django самым сложным запросом часто бывает такой, который требует объединения нескольких таблиц с фильтрацией, агрегацией и аннотациями.
Например, запрос для получения списка пользователей с количеством их активных заказов за последний месяц, где заказы сгруппированы по статусу и отсортированы по количеству:
from django.db.models import Count, Q
from django.utils.timezone import now
from datetime import timedelta
one_month_ago = now() - timedelta(days=30)
users = User.objects.annotate(
active_orders_count=Count('orders', filter=Q(orders__status='active', orders__created_at__gte=one_month_ago))
).filter(active_orders_count__gt=0).order_by('-active_orders_count')
Такой запрос сочетает в себе:
- Фильтрацию связанных объектов (
orders__status='active') - Использование аннотаций и агрегатных функций (
Count) - Фильтрацию по дате
- Сортировку по вычисленному полю
В более сложных случаях приходится использовать Subquery, Prefetch или даже RawSQL для оптимизации и реализации специфичных запросов.