Передать контекст запроса в сериализатор из Viewset в Django Rest Framework

У меня есть случай, когда значения для поля сериализатора зависят от личности вошедшего в систему пользователя. Я видел, как добавить пользователя в контекст при инициализации сериализатора, но я не уверен, как это сделать при использовании ViewSet, поскольку вы предоставляете только класс сериализатора, а не фактический экземпляр сериализатора.

В основном я хотел бы знать, как перейти от:

class myModelViewSet(ModelViewSet):
   queryset = myModel.objects.all()
   permission_classes = [DjangoModelPermissions]
   serializer_class = myModelSerializer

чтобы:

class myModelSerializer(serializers.ModelSerializer):
    uploaded_by = serializers.SerializerMethodField()
    special_field = serializers.SerializerMethodField()

    class Meta:
        model = myModel

    def get_special_field(self, obj):
        if self.context['request'].user.has_perm('something.add_something'):
           return something

Извините, если не ясно, из DOCs:Добавление дополнительного контекста Который говорит делать

serializer = AccountSerializer(account, context={'request': request})
serializer.data

Но я не уверен, как сделать это автоматически из набора просмотра, поскольку я могу изменить только класс сериализатора, а не сам экземпляр сериализатора.

Ответы на вопрос(4)

Ваш ответ на вопрос