In Django REST Framework you have a Viewsets, which can contain multiple views (actions).
But to use different serializers and permissions for each action you always need to override get_serializer_class
or get_permissions
methods.
Here I've implemented a mixins which allow you to setup your serializers and permissions per action in a dictionaries
class UserViewSet(SerializerPerAction, PermissionPerAction, ModelViewSet):
queryset = User.objects.all()
action_serializers = {