Django Rest Framework — ListCreateAPIView ничего не печатает

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Я создал API для list и создаю с помощью django rest framework. Но он ничего не печатает в API, доступном для просмотра в Интернете. Я не знаю, в чем проблема. Когда я печатаю переменную queryset и serializer , она выдает правильный вывод как QuerySet . Почему это происходит?

Views.py

 from rest_framework.response import Response
from rest_framework import generics
from .serializers import MovieSerializer
from movie.models import Movie
from rest_framework.permissions import IsAuthenticated

   class MovieList(generics.ListCreateAPIView):
       queryset = Movie.objects.all()[:10]
       serializer_class = MovieSerializer
       permission_classes = (IsAuthenticated,)

       def list(self, request):
           # Note the use of `get_queryset()` instead of `self.queryset`
           queryset = self.get_queryset()
           # print(queryset)
           serializer = MovieSerializer(queryset, many=True)
           # print(serializer.data)
           return Response(serializer.data)
  

Serializers.py

 from rest_framework import serializers
from movie.models import Movie

   class MovieSerializer(serializers.Serializer):
       class Meta:
           model = Movie
           fields = [
               'popularity',
               'director',
               'genre',
               'imdb_score',
               'name',
           ]
  

Смотрите изображение для справки.
введите описание изображения здесь

Комментарии:

1. заполнены ли ваши данные?

2. да, он заполнен

3. Вы используете не ModelSerializer , а просто Serializer . Кроме того, позаботьтесь о разделении набора запросов таким образом.

Ответ №1:

Проблема в вашем serializers.py . Вы должны использовать ModelSerializer вместо Serializer .

 from rest_framework import serializers
from movie.models import Movie

   class MovieSerializer(serializers.ModelSerializer):  # <- 
       class Meta:
           model = Movie
           fields = [
               'popularity',
               'director',
               'genre',
               'imdb_score',
               'name',
           ]