Django rest framework не отображает все поля и не применяет пагинацию

У меня нет никаких идей, что вызывает эту проблему. Django rest framework не отображает все поля, когда я хочу опубликовать данные, он также не применяет пагинацию. Вот код:

views.py

class BookApiList(APIView):
    
    def get(self, request, format = None):
        books = Book.objects.all()

        serializer = BookSerializer(books, many = True)
        return Response(serializer.data)
    
    def post(self, request, format = None):

        serializer = BookSerializer(data = request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status = status.HTTP_201_CREATED)
        return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)


class BookApiDetail(APIView):
    def get_object(self, name):
        try:
            book = Book.objects.get(title = name)
            return book
        except:
            raise Http404

    def get(self, request, name, format = None):
        book = self.get_object(name)
        serializer = BookSerializer(book)
        return Response(serializer.data)
    
    def put(self, request, name, format = None):
        book = self.get_object(name)
        serializer = BookSerializer(book, data = request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

    def delete(self, request, name, format=None):
        book = self.get_object(name)
        book.delete()
        return Response(status = status.HTTP_204_NO_CONTENT)

models.py

class Book(models.Model):
    user = models.ForeignKey(User, on_delete = models.CASCADE, null = True, blank = True)
    image = models.ImageField(default = "Nana.jpg", upload_to = 'images/', null = True, blank = True)
    title = models.CharField(max_length = 150, unique = True)
    author = models.CharField(max_length = 100)
    category = models.CharField(max_length = 100)
    description = models.TextField(max_length = 5000, null = True, blank = True)
    published_date = models.DateField(null = True, blank = True)
    language = models.CharField(max_length = 100, null = True, blank = True, default = "Not selected")
    read_book_count = models.IntegerField(default = 0)


    def __str__(self):
        return self.title

serializers.py

class BookSerializer(serializers.ModelSerializer):

    class Meta:
        model = Book
        fields = [ 'title', 'author', 'category', 'description', 'published_date', 'language']

urls.py

path('library/api/books/', views.BookApiList.as_view(), name = 'api_list'),
path('library/api/books/<slug:name>/', views.BookApiDetail.as_view(), name = 'book_api_detail'),

settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 1
}

Когда я перехожу по первой ссылке url, я получаю все данные и эту форму: enter image description here

Но это должно дать мне форму со всеми моими полями. Спасибо!

В представлениях, определяемых пользователем (например: APIView), необходимо постранично обрабатывать набор запросов и возвращать постраничный ответ. и restframework не может найти, какую модель и поля вы используете в APIView, поэтому вместо APIView используйте ListCreateAPIView

измените вид BookApiList следующим образом:

from rest_framework import generics

class BookApiList(generics.ListCreateAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
Вернуться на верх