无法通过JSON字符串中给定的id获取用户详细信息| Django中的Getting a Type错误



我试图通过提供用户id(也是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)

每当我在URL的正文中输入JSON数据时,例如:{"id":"2"}我收到这个错误

[TypeError at/descripte/UserSerializer类型的对象不可JSON序列化]

看起来您正在传递Serializer对象本身。。

Per:rest框架tut序列化,看起来你必须指定.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)

最新更新