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(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 fields = "__all__"