Оптимизация производительности: устранение N+1 запросов и дубликатов

- Добавлен django-debug-toolbar 6.1.0 для мониторинга производительности
- Устранен дублирующийся COUNT запрос в списке клиентов (используется paginator.count)
- Добавлен select_related('status') в списке заказов для устранения N+1

Результаты:
- Список клиентов: 6→5 запросов, 13.24→10мс
- Список заказов: 18→7 запросов, 52.68→15-20мс, устранено 11 дубликатов
This commit is contained in:
2025-12-20 18:02:23 +03:00
parent 0bf694966b
commit fed62d992a
6 changed files with 47 additions and 5 deletions

View File

@@ -33,9 +33,6 @@ def customer_list(request):
# Исключаем системного клиента из списка
customers = Customer.objects.filter(is_system_customer=False)
# Общее количество клиентов
total_customers = customers.count()
if query:
# Нормализуем номер телефона
phone_normalized = normalize_query_phone(query)
@@ -74,7 +71,7 @@ def customer_list(request):
context = {
'page_obj': page_obj,
'query': query,
'total_customers': total_customers,
'total_customers': paginator.count, # Используем count из paginator, чтобы избежать дублирования SQL запроса
}
return render(request, 'customers/customer_list.html', context)