From 774d79294bdeab0d9d841b9775f696cdbb334c4d Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 4 Mar 2025 15:53:59 +0100 Subject: [PATCH] book search --- src/catalogue/api/views.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index 5afec171a..dac1968ad 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -9,7 +9,8 @@ from django.core.files.base import ContentFile from django.http import Http404, HttpResponse from django.utils.decorators import method_decorator from django.views.decorators.cache import never_cache -from django_filters import rest_framework as filters +from django_filters import rest_framework as dfilters +from rest_framework import filters from rest_framework.generics import (ListAPIView, RetrieveAPIView, RetrieveUpdateAPIView, get_object_or_404) from rest_framework.permissions import DjangoModelPermissionsOrAnonReadOnly @@ -184,14 +185,14 @@ class BookList(LegacyListAPIView): return Response({}, status=status.HTTP_201_CREATED) -class BookFilter(filters.FilterSet): - sort = filters.OrderingFilter( +class BookFilter(dfilters.FilterSet): + sort = dfilters.OrderingFilter( fields=( ('sort_key_author', 'alpha'), ('popularity', 'popularity'), ) ) - tag = filters.ModelMultipleChoiceFilter( + tag = dfilters.ModelMultipleChoiceFilter( field_name='tag_relations__tag', queryset=Tag.objects.filter(category__in=('author', 'epoch', 'genre', 'kind')), conjoined=True, @@ -202,8 +203,14 @@ class BookList2(ListAPIView): permission_classes = [DjangoModelPermissionsOrAnonReadOnly] queryset = Book.objects.none() # Required for DjangoModelPermissions serializer_class = serializers.BookSerializer2 - filter_backends = (filters.DjangoFilterBackend,) + filter_backends = ( + dfilters.DjangoFilterBackend, + filters.SearchFilter, + ) filterset_class = BookFilter + search_fields = [ + 'title', + ] def get_queryset(self): books = Book.objects.all() -- 2.20.1