Django Rest Framework переопределить метод списка просмотра необязательно? - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь изменить метод списка ViewSet.

Мне нужно возвращать данные, только если условие удовлетворяет. в противном случае должно вызываться поведение по умолчанию.

def list(self, request):
    """Allow profile listing only for admin and super admins."""

    if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
        #invoke default behaviour
        pass 
    else:
        return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)

Но этот код не работает в случае выполнения условия.

Я новичок в Django и DRF, есть ли лучший способ сделать это? Или как я могу исправить вышеуказанный код?

1 Ответ

2 голосов
/ 05 марта 2019

Если вы хотите поведение по умолчанию, вам нужно вызвать return super().list(request, *args, **kwargs) вместо pass.

Также я не уверен, что 403 не будет лучше, чем 405 код состояния?Так это может выглядеть так:

def list(self, request, *args, **kwargs):
    """Allow profile listing only for admin and super admins."""

    if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
        #invoke default behaviour
        return super().list(request, *args, **kwargs)
    else:
        return Response(status=status.HTTP_403_FORBIDDEN)
...