from rest_framework.generics import ( ListAPIView, RetrieveAPIView, CreateAPIView ) from rest_framework.permissions import IsAuthenticated from rest_framework.filters import SearchFilter, OrderingFilter from django.db.models import Q from .serializers import SmartListSerializer from ..models import SmartModule class SmartListAPIView(ListAPIView): serializer_class = SmartListSerializer filter_backends = [SearchFilter, OrderingFilter] search_fields = ['name', 'device_id', 'chip_id', 'region'] def get_queryset(self, *args, **kwargs): queryset_list = SmartModule.objects.all() query = self.request.GET.get('q') if query: queryset_list = queryset_list.filter( Q(name__icontains=query) | Q(device_id__icontains=query) | Q(chip_id__contains=query) | Q(region__icontains=query) ).distinct() return queryset_list