(Django Rest Framework) Как мне обновить пользовательскую модель

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

Я пытаюсь обновить пользовательскую модель (с помощью метода исправления Django Rest Framework в APIView), но я продолжаю получать ошибку.

 `NotImplementedError: update() must be implemented.`
  

Вот мой сериализатор:

 class UpdateSerializer(serializers.Serializer):
class Meta:
    model = User
    fields = ('email', 'first_name', 'last_name',
              'phone')
  

Вот мое мнение:

 class UpdateUser(APIView):
    permission_classes = [
        permissions.IsAuthenticated,
    ]

    def patch(self, request):
        """
        `Update User`
        """
        user = self.request.user
        serializer = UpdateSerializer(user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  

Я создал пользовательскую модель пользователя, мой сериализатор для регистрации пользователей работает нормально, но этот сериализатор обновления выдает эту ошибку

Комментарии:

1. Где в вашем коде вызывается функция update() ? Возможно, вы пытаетесь вызвать вызываемую функцию patch() ? Можете ли вы опубликовать больше трассировки стека (чтобы мы могли видеть, откуда update() вызывается, например)

Ответ №1:

Используйте serializers.ModelSerializer вместо serializers.Serializer

 class UpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email', 'first_name', 'last_name', 'phone')