use*_*719 13 python django serialization django-models django-rest-framework
我正在使用djangorestframework,有人向a发出PUT请求.../peoplelist/2/markAsSeen,只在URL中传递一个Person对象的id.我获取Person对象(在这种情况下为2),然后只需将获取的Person对象的字段更改has_been_viewed为True.然后将更新的Person对象序列化并返回给客户端.
if request.method == 'PUT':
serializer = PersonSerializer(person,partial=True)#person is a valid object here
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors,)
Run Code Online (Sandbox Code Playgroud)
序列化程序错误{u'non_field_errors': [u'No input provided']}
serializer.data对我来说很好看
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('id',)
Run Code Online (Sandbox Code Playgroud)
Tom*_*tie 19
您提供了一个由序列化程序更新的人员实例,但没有随附数据来更新该实例.
如果要反序列化某些请求数据以更新该实例,那么您将错过该data参数,例如:
PersonSerializer(person, data=request.DATA, partial=True)
Run Code Online (Sandbox Code Playgroud)
然而,这听起来像你想要的端点实际上并不期望处理任何输入数据(它只是一个空的PUT请求你正在做什么?)在这种情况下你根本不需要/需要使用序列化器.