Получение объекта 'ModelBase' не является итерируемым

Я создаю следующее представление для получения списка фруктов и получаю сообщение об ошибке такого типа. Я не знаю, что я здесь упустил:

TypeError: 'ModelBase' object is not iterable

views.py

class FruitsList(APIView):

    # To list fruits
    def get(self, request):
        fruits = Fruit.objects.all()
        serializer = FruitSerializer(Fruit, many = True)
        return Response(serializer.data)

serializers.py:

class FruitSerializer(serializers.ModelSerializer):

    class Meta:
        model = Fruit
        fields = [
            'id',
            'name',
            'customers',
        ]

models.py:

class Fruit(models.Model):
    """represents customer fruits"""

    name = models.CharField(max_length = 100)
    customers = models.ManyToManyField(Customer)

    def __str__(self):
        return self.name

Ваша помощь очень ценится!

Вы передаете в сериализатор класс Fruit, тогда как сериализатор ожидает получить список объектов этого класса или его кверисет. Поэтому вам нужно изменить ваши представления на:

class FruitsList(APIView):

    # To list fruits
    def get(self, request):
        fruits = Fruit.objects.all()
        # This is where the error is, pass in `fruits` instead, not the class
        serializer = FruitSerializer(fruits, many=True)
        return Response(serializer.data)
Вернуться на верх