DRF SearchFilter в ListAPIViews
Я работаю на Django==3.2.7, djangorestframework==3.12.4 и django-filter==21.1. и React для фронтенда
Что бы я хотел сделать:
- Return Job Offer objects that contains words from search (Search fields job_title and localistation)
- Remove useless words like ('in', 'a', 'an', 'the', 'at', 'for', 'to') in search
вот пример url:
{{URL}}/api/v1/job-offers/jobs/?search=Chef in Texas
allowed_methods = ['GET']
Что я сделал до сих пор в моем (ListAPIView):
class JobOfferListAPIView(generics.ListAPIView):
permission_classes = [permissions.IsAuthenticated]
queryset = JobOffer.objects.all()
serializer_class = JobOfferSerializer
filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend]
search_fields = ['job_title', 'localisation']
ordering_fields = ['user', 'is_active']
filterset_fields = ['user', 'is_active', 'job_title', 'type_of_job', 'start_date', 'salary', 'localisation']
def get_queryset(self, *args, **kwargs):
exclude_words = ['in', 'a', 'an', 'the', 'at', 'for', 'to']
keywords = self.request.GET.get('search').split(' ')
keywords = [keyword for keyword in keywords if keyword not in exclude_words]
if keywords:
for keyword in keywords:
queryset = queryset.filter(
Q(job_title__icontains=keyword) | Q(localisation__icontains=keyword)
)
print(queryset)
return queryset
Problème: Когда я печатаю набор запросов, я вижу отфильтрованные предложения работы в терминале, но они не возвращаются в Postman.
Экран почтальона
Поделитесь, пожалуйста, кодом вашего сериализатора.
Для проверки того, разбирается ли набор запросов в сериализаторе или нет, используйте raise Exception(queryset) или, если все правильно, raise Exception(serializer.data)

