refactor(filters): Enhance user filtering in DeviceFilter to search across multiple user fields 🔨
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m44s

This commit is contained in:
2025-06-30 22:40:13 +05:00
parent dc8fe44004
commit 708d7c2bec

View File

@ -1,14 +1,24 @@
import django_filters
from .models import Device
from django.db.models import Q
class DeviceFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr="icontains")
mac = django_filters.CharFilter(lookup_expr="icontains")
vendor = django_filters.CharFilter(lookup_expr="icontains")
user = django_filters.CharFilter(
field_name="user__last_name", lookup_expr="icontains"
)
user = django_filters.CharFilter(method="filter_user_search")
def filter_user_search(self, queryset, name, value):
"""
Search across multiple user fields: first_name, last_name, id_card, mobile
"""
return queryset.filter(
Q(user__first_name__icontains=value)
| Q(user__last_name__icontains=value)
| Q(user__id_card__icontains=value)
| Q(user__mobile__icontains=value)
)
class Meta:
model = Device