DRF - has_object_permission не вызывается - PullRequest
0 голосов
/ 20 февраля 2019

Итак, я просмотрел похожие вопросы по той же теме и Я думаю Я следую всем правилам, указанным для has_object_permission.

Вот чтоУ меня в настройках.

REST_FRAMEWORK = {

    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        'users.permissions.CanAccessData', # this is my custom class
    ],

    .  
    .
    .
}

Это мой класс разрешений

class CanAccessData(permissions.BasePermission):
    message = 'You do not have permission to perform this action.'

    def has_permission(self, request, view):
        print "has_permission`"
        return True

    def has_object_permission(self, request, view, obj):
        print "has_object_permission"
        return False

Вот моя структура представления:

class CompleteList(generics.ListCreateAPIView):
    permission_classes = (CanAccessData,)
    serializer_class = SomeSerializer
    model = Some
    filter_backends = (filters.OrderingFilter, filters.SearchFilter)
    ordering_fields = (tuple of Some fields)
    search_fields = ordering_fields
    ordering = ('-create_date')

Тем не менее, has_object_permission - этоне вызывается, has_permission вызывается, хотя.

Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

has_object_permission не вызывается для представлений списка.Документация гласит следующее:

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

...