Разрешить DELETE только без pk Django Rest Framework

Требуется разрешить посылать запросы:

DELETE /users (в body находятся ids для удаления)

Но запретить:

DELETE /users/{id}

Мой алгоритм:

  1. Создал обычный класс UserViewSet, который наследуется от DestroyModelMixin и GenericViewSet.

  2. Реализовал метод 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 маршруты, не особо понимаю нужно ли в данном случае от них уходить.

Вернуться на верх