Self.action is None в DRF

self.action является None в get_permissions() методе.
Когда вызывается несуществующий url, DRF не выбрасывает ошибку 404. Поэтому каким-то образом действие None в get_permissions() method.

Вот ModelViewSet:

class UserViewSet(ModelViewSet):
    serializer_classes = {
        "list": UserSerializer,
        "retrieve": UserSerializer,
        "create": UserSerializer,
        "update": UserUpdateSerializer,
    }
    http_method_names = ["get", "post", "put"]

    def get_serializer_class(self):
        return self.serializer_classes[self.action]

    def get_permissions(self):
        if self.action is None:
            # here error raises when i call '.../accounts/blablabla/` endpoint in post request instead of 404?
            raise AssertionError("self.action cannot be None") 
        if self.action in ["list", "retrieve"]:
            return [IsAuthenticated(), IsAdmin()]
        else:
            return [AllowAny()]

Вот моя ссылка на обсуждение #8199 на github.

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