djangorestframework序列化程序错误:{u'non_field_errors':[u'No input provided']}

时间:2013-12-17 07:44:35

标签: python django serialization django-models django-rest-framework

我正在使用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',)

1 个答案:

答案 0 :(得分:18)

您提供的是由序列化程序更新的人员实例,但没有随附数据来更新该实例。

如果要反序列化某些请求数据以更新该实例,那么您将错过data参数,例如:

PersonSerializer(person, data=request.DATA, partial=True)

然而,这听起来像你想要的端点实际上并不期望处理任何输入数据(它只是一个空的PUT请求你做对了?)在这种情况下你不需要/需要完全使用序列化器。