Разрешить DELETE только без pk Django Rest Framework
Требуется разрешить посылать запросы:
DELETE /users (в body находятся ids для удаления)
Но запретить:
DELETE /users/{id}
Мой алгоритм:
Создал обычный класс
UserViewSet, который наследуется отDestroyModelMixinиGenericViewSet.Реализовал метод
def delete(self, request), теперь запросDELETE /usersвыполняется корректно.
Проблема в том, что нужно еще запретить посылать запрос вида DELETE /users/{id}.
Пытался перестать наследоваться от DestroyModelMixin, но тогда выдается страница 404 Not Found, так как отсутствует машрут.
Пытался реализовать метод delete с такой сигнатурой:
def delete(self, request, pk=None):
if pk:
return Response(data='PK is not allowed in DELETE method')
Но, видимо для DELETE /users/{id} всегда используется метод def destroy(self, request, pk).
Единственное, как у меня получилось сделать - это вот так:
def destroy(self, request, pk=None):
raise exceptions.MethodNotAllowed('DELETE with PK')
При запросе DELETE /users/{id} выдается, что метод DELETE with PK не разрешен.
Но я так понимаю - это совсем странное решение и можно сделать как-то намного проще. Буду благодарен за подсказку.
Также в urls.py используются SimpleRouter маршруты, не особо понимаю нужно ли в данном случае от них уходить.