Подтвердить что ты не робот

Ошибки сериализатора djangorestframework: {u'non_field_errors ': [u'No input provided]]}

Я использую djangorestframework, и кто-то делает запрос PUT на .../peoplelist/2/markAsSeen, передавая только идентификатор объекта Person в URL. Я извлекаю объект 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',)
4b9b3361

Ответ 1

Вы предоставляете экземпляр человека, который должен обновляться с помощью сериализатора, но не сопровождающие данные для обновления этого экземпляра.

Если вы хотите десериализовать некоторые данные запроса, чтобы обновить этот экземпляр, тогда вам не будет отсутствовать аргумент data, например:

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

Однако похоже, что конечная точка, которую вы хотите, на самом деле не рассчитывает иметь дело с любыми входными данными (это просто пустой запрос PUT, который вы делаете правильно?) В этом случае вы не хотите/должны быть используя сериализатор вообще.