Объект типа не JSON сериализуемый - PullRequest
0 голосов
/ 29 мая 2020

Только что начал с Django Rest framework и следовал замечательному руководству: https://sunscrapers.com/blog/ultimate-tutorial-django-rest-framework-part-1/

Я создал тестовую модель:

models. py

class Test(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField

И чтобы сделать объект доступным через API, я реализовал сериализатор. Это будет сериализовано в XML, YAML или JSON, последний - это то, что меня интересует. Ниже мой класс сериализации.

serializers.py

class TestSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Test
        fields = ('name', 'age')

app / views.py

class TestViewSet(viewsets.ModelViewSet):
    queryset = models.Test.objects.all()
    serializer_class = serializers.TestSerializer

Однако, похоже, он не сериализуется в JSON, как ожидалось, как показано в приведенной ниже ошибке:

File "C:\Program Files\Python38\lib\json\encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type type is not JSON serializable

Стоит добавить, что он проработал около 2 часов, а потом просто вышел из строя.

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы пропустили пару круглых скобок в поле age вашего класса Test:

class Test(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()  # <-- missed this pair
0 голосов
/ 30 июня 2020

Не уверен, что это будет полезно для кого-то, но я столкнулся с той же проблемой, и у меня была запятая (,) в конце этой строки.

...