diff --git a/devices/filters.py b/devices/filters.py index ad7ea80..702f65c 100644 --- a/devices/filters.py +++ b/devices/filters.py @@ -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