Wie stelle ich einen anderen Serializer für die Listen- und Detailansicht ein, während ich viewsets.ModelViewSet
und HyperlinkedSerializer
verwende?
Ich sehe, wie man es mit viewsets.ViewSet
macht, indem man list
und retrive
definiert ( hier ist ein Beispiel ), aber ich kann es nicht elegant an viewsets.ModelViewSet
Ich habe eine Antwort von " Django angepasst rest framework, benutze verschiedene Serialisierer im selben ModelViewSet "das mir sehr gut tut, und ich hoffe du findest nützlich:
%Vor%In diesem Fall geben Sie nur Ihre zwei Serialisierer an und verwenden den je nach Aktion. Dies kann jedoch allgemeiner (für alle Aktionen) wie folgt gemacht werden:
%Vor%Viewsets erweitern die Klasse GenericAPIView, so dass Sie diesen Teil der Dokumentation um dein Problem zu lösen. Im Grunde müssen Sie get_serializer_class überschreiben und einen anderen Serializer basierend auf Ihrer Anfrage zurückgeben.
Ich habe dieses kleine Paket für diesen Job erstellt. drf_custom_viewsets .
Es hat CustomSerializerViewSet
, das von ModelViewSet
erbt, wodurch Sie verschiedene Serializer für verschiedene Aktionen einstellen können.
Tags und Links django django-rest-framework