Anforderungskontext von Viewset in Django Rest Framework an Serializer übergeben

Ich habe einen Fall, in dem die Werte für ein Serializer-Feld von der Identität des aktuell angemeldeten Benutzers abhängen. Ich habe gesehen, wie der Benutzer dem Kontext hinzugefügt wird, wenn ein Serializer initialisiert wird, bin mir jedoch nicht sicher, wie dies bei Verwendung eines ViewSet erfolgen soll, da Sie nur die Serializer-Klasse und nicht die tatsächliche Serializer-Instanz angeben.

rundsätzlich würde ich gerne wissen, wie es weitergeht:

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

zu

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

Tut mir leid, wenn es nicht klar war, aus den DOCs:Adding Extra Context Was sagt zu tun

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

Aber ich bin nicht sicher, wie ich das automatisch aus dem Viewset heraus machen soll, da ich nur die Serializer-Klasse und nicht die Serializer-Instanz selbst ändern kann.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage