diff --git a/myproject/customers/views.py b/myproject/customers/views.py index 7380ece..0efb265 100644 --- a/myproject/customers/views.py +++ b/myproject/customers/views.py @@ -153,8 +153,22 @@ def api_search_customers(request): # Ищем по имени, email или телефону # Используем Q-объекты для OR условий - # Для email используем icontains (поиск по части) - это позволит найти по любой части email - q_objects = Q(name__icontains=query) | Q(email__icontains=query) + + # Определяем, нужно ли искать по email + # Критерии: (@present AND 2+ chars after @) OR (no @ AND 3+ chars total) + search_by_email = False + if '@' in query: + # Если есть @, то нужно 2+ символа после @ + parts = query.split('@') + if len(parts) >= 2 and len(parts[-1]) >= 2: + search_by_email = True + elif len(query) >= 3: + # Если нет @, требуем минимум 3 символа для поиска по email + search_by_email = True + + q_objects = Q(name__icontains=query) + if search_by_email: + q_objects |= Q(email__icontains=query) # Для телефона ищем по нормализованному номеру и по цифрам if phone_normalized: