Pass-Antrag Kontext zu serializer aus Viewset in Django Rest Framework

Habe ich einen Fall, wo die Werte für einen serializer Feldes hängen von der Identität des aktuell angemeldeten Benutzers. Ich habe gesehen, wie Sie den Benutzer hinzufügen, um den Kontext bei der Initialisierung ein serializer, aber ich bin nicht sicher, wie Sie dies tun, wenn mit einem ViewSet, wie Sie nur der Versorgung der serializer-Klasse und nicht die tatsächliche serializer Instanz.

Grundsätzlich würde ich gerne wissen, wie man von:

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

Sorry wenn es nicht klar aus der Dokumentation:
Das Hinzufügen Von Zusätzlichen Kontext
Was sagt

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

Aber ich bin nicht sicher, wie zu tun, die automatisch von der viewset, wie ich nur kann, ändern Sie die serializer-Klasse, und nicht die serializer-Instanz selbst.

InformationsquelleAutor der Frage oowowaee | 2015-06-24

Schreibe einen Kommentar