Django -REST: пользовательское разрешение не работает - PullRequest
1 голос
/ 27 февраля 2020

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

views.py

class CustomModelList(generics.ListAPIView):
    queryset = CustomModel.objects.all()
    serializer_class = CustomModelSerializer
    permission_classes = [IsAuthenticatedOrReadOnly, IsCustomOrReadOnly]

    def get(self, request, format=None):
        # some logic

    def post(self, request, format=None):
        # some logic

Только для эксперимента I ' Мы создали это разрешение не применять в любом случае

pesmissions.py

class IsCustomOrReadOnly(BasePermission):
    def has_object_permission(self, request, view, obj):
        return False

Но когда POST-запрос отправляется на сервер, он не действует - я могу создать новый экземпляр модели.

1 Ответ

1 голос
/ 27 февраля 2020

Я думаю, что поскольку вы используете представление списка, пользовательские разрешения на уровне объектов не проверяются автоматически.

Также обратите внимание, что общие c представления будут проверять только разрешения на уровне объекта для представлений, которые получают один экземпляр модели. Если вам требуется фильтрация представлений списка на уровне объектов, вам нужно будет отфильтровать набор запросов отдельно. Подробнее см. В документации по фильтрации.

Вместо этого можно попробовать переопределить метод has_permission и посмотреть, работает ли он, или проверить разрешения вручную.

...