所以我使用这样的基本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/