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.