Уникальное сообщение для каждого разрешения, объединенное с помощью побитового оператора в DRF - PullRequest
0 голосов
/ 20 июня 2020

Вопрос о получении уникального сообщения в случае использования нескольких разрешений в DRF.

Например, у меня есть 2 следующих класса разрешений:

class PermOne(permissions.IsAuthenticated):
   
    message = ‘message one’

    def has_object_permission(self, request, view, obj):
        return obj.entry_author == request.user


class PermTwo(permissions.IsAuthenticated):
   
    message = ‘message two’

    def has_object_permission(self, request, view, obj):
        return request.user.is_active


class MyView( generics.CreateAPIView):
    permission_classes = (PermOne |PermTwo)
…
…
…

Проблема в том, что я объединяю 2 или более ремиссия с такими операторами, как | &, в случае сбоя вместо уникального сообщения, определенного в каждом классе разрешений, я получаю стандартный

 {
    "detail": "You do not have permission to perform this action."
}

, тогда как в случае только одного класса разрешения сообщение успешно берется из класса разрешений .

Конечно, я могу объединить 2 разрешения в одном классе и определить logi c выбора сообщения внутри этого класса, но это нормально для 2 разрешений, а как насчет 5? Кажется, что это против потока.

В любом случае, можно ли предоставить уникальное сообщение, используемое для каждого класса разрешений, в случае их объединения через | или & ???

Спасибо!

...