所以我使用这样的基本API视图:

@api_view(['GET'])
def load_info(request,user_id):
    user = User.objects.get(pk=user_id)
    profile = user.profile
    serialized = ProfileSerializerInfo(profile,data=request.DATA)
    print serialized.data
    if serialized.is_valid():
        return Response(serialized)
    else:
        return Response(serialized.errors)


现在print serialized.data返回与用户有关的全部信息,而返回的JSON是serialized.errors,它表示:

{
    "user": [
        "This field is required."
    ]
}


为什么Django rest框架没有注意到JSON中的user字段?

注意

这是serialized.data的样子:

{'user': {u'id': 22, ...}, 'follower_count':3452,...}


我也尝试将serialized.data传递给Response,但这也不起作用。

根据要求,这是序列化器:

class ProfileSerializerInfo(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = Profile

最佳答案

您能否发布ProfileSerializerInfo的定义,并且正在使用嵌套的序列化程序?

您可以在ProfileSerializerInfo上尝试使用user = UserSerializer(many = False,required = False)

还从here找到了这个:

您需要使用partial=True用部分数据更新行:

serializer = UserSerializer(user, data=request.DATA, partial=True)


docs


  默认情况下,必须为所有必填字段传递序列化程序值
  否则会抛出验证错误。您可以使用partial参数
  为了允许部分更新。

关于python - Django Rest框架未正确读取JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21532639/

10-10 15:22