from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.permissions import IsAuthenticated from apps.books.models import Book from apps.books.serializers import BookListSerializer, BookSerializer class BookViewSet(viewsets.ModelViewSet): """CRUD for books.""" queryset = Book.objects.all() permission_classes = [IsAuthenticated] filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ["author"] search_fields = ["title", "author"] ordering_fields = ["title", "author", "created_at"] ordering = ["title"] def get_serializer_class(self): if self.action == "list": return BookListSerializer return BookSerializer