我正在使用djangorestframework,有人向.../peoplelist/2/markAsSeen
发出PUT请求,只在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,)
序列化程序错误为{u'non_field_errors': [u'No input provided']}
serializer.data
对我来说很好看
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('id',)
答案 0 :(得分:18)
您提供的是由序列化程序更新的人员实例,但没有随附数据来更新该实例。
如果要反序列化某些请求数据以更新该实例,那么您将错过data
参数,例如:
PersonSerializer(person, data=request.DATA, partial=True)
然而,这听起来像你想要的端点实际上并不期望处理任何输入数据(它只是一个空的PUT
请求你做对了?)在这种情况下你不需要/需要完全使用序列化器。