Невозможно получить данные о пользователе по идентификатору, заданному в строке JSON | Получение ошибки типа в Django

Я пытаюсь получить данные пользователя (в формате строки JSON), предоставив идентификатор пользователя (также в формате строки JSON)

Это код моей модели

    class Description(models.Model):
    description = models.CharField(max_length=150)

    def __str__(self):
        return self.description

class Team(models.Model):
    team_name = models.CharField(max_length=50)
    description = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.team_name

class User(models.Model):
    name = models.CharField(max_length=64)
    username = models.CharField(max_length=64, unique=True)
    description = models.ForeignKey(Description, null=True, on_delete=models.SET_NULL)
    team = models.ForeignKey(Team, null=True, on_delete=models.SET_NULL)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.name}"

Это код сериализатора

from rest_framework import serializers
from users.models import Description, Team, User

class DescriptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Description
        fields = "__all__"

class TeamSerializer(serializers.ModelSerializer):
    class Meta:
        model = Team
        fields = "__all__"

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

Это код представления

from urllib import response
from django.shortcuts import render
from django.http import JsonResponse
from rest_framework.response import Response
from rest_framework.decorators import api_view
from users.models import User, Team, Description
from .serializers import UserSerializer, TeamSerializer, DescriptionSerializer

# describe user
@api_view(["GET"])
def describe_user(request):
    user = User.objects.get(pk=request.data["id"])
    serializer = UserSerializer(user)
    return JsonResponse(serializer, safe=False)

Когда я ввожу данные JSON в тело URL, например: {"id": "2"}. я получаю эту ошибку

[TypeError at /describe/ Объект типа UserSerializer не является JSON сериализуемым]

Похоже, что вы передаете сам объект сериализатора

Пер: rest-framework tut serialization, Похоже, что вы должны указать .data
. Их пример:

serializer = SnippetSerializer(snippet)
serializer.data
# {'id': 2, 'title': '', 'code': 'print("hello, world")\n', 'linenos': False, 'language': 'python', 'style': 'friendly'}

Это привело бы к чему-то вроде этого:

@api_view(["GET"])
def describe_user(request):
    user = User.objects.get(pk=request.data["id"])
    serializer = UserSerializer(user)

    # debuggers
    print(type(serializer), serializer)
    print(type(serializer.data), serializer.data)

    return JsonResponse(serializer.data, safe=False)
Вернуться на верх