Я некоторое время боролся с этим, но это очень простая реализация, использующая общие представления или комбинацию общих представлений и mixins.
В случае использования общего представления обновления (generics. UpdateAPIView), просто используйте следующий код, убедившись, что тип запроса - PATCH:
class UpdateUser(generics.UpdateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
Нет ничего другого!
Если вы используете обновление mixin (mixins .UpdateModelMixin) в сочетании с общим представлением (generics.GenericAPIView), используйте следующий код, убедившись, что тип запроса - PATCH:
class ActivateUser(mixins.UpdateModelMixin, generics.GenericAPIView):
serializer_class = UserSerializer
model = User
lookup_field = 'email'
def get_queryset(self):
queryset = self.model.objects.filter(active=False)
return queryset
def patch(self, request, *args, **kwargs):
return self.partial_update(request, *args, **kwargs)
Второй пример более сложный, показывая вам, как переопределить поле запроса и поиска, но код, на который вы должны обратить внимание, - это функция патча.