Добавлены фильтры для списка клиентов через django-filter

- Создан CustomerFilter с тремя фильтрами:
  * Есть заметки (has_notes)
  * Нет телефона (no_phone)
  * Нет email (no_email)

- Обновлен views.py для использования фильтров
- Добавлены чекбоксы фильтров в шаблон списка клиентов
- Фильтры работают совместно с поиском
- Кнопка Очистить отображается при активных фильтрах или поиске
This commit is contained in:
2026-01-03 14:50:24 +03:00
parent 63a965ae5c
commit 5ded404346
3 changed files with 101 additions and 7 deletions

View File

@@ -13,6 +13,7 @@ import json
from decimal import Decimal
from .models import Customer, ContactChannel
from .forms import CustomerForm, ContactChannelForm
from .filters import CustomerFilter
def normalize_query_phone(q):
@@ -33,6 +34,10 @@ def customer_list(request):
# Исключаем системного клиента из списка
customers = Customer.objects.filter(is_system_customer=False)
# Применяем фильтры django-filter
customer_filter = CustomerFilter(request.GET, queryset=customers)
customers = customer_filter.qs
if query:
# Нормализуем номер телефона
phone_normalized = normalize_query_phone(query)
@@ -79,6 +84,7 @@ def customer_list(request):
'page_obj': page_obj,
'query': query,
'total_customers': paginator.count, # Используем count из paginator, чтобы избежать дублирования SQL запроса
'filter': customer_filter, # Добавляем фильтр в контекст
}
return render(request, 'customers/customer_list.html', context)