Ich verwende Django REST Framework, um eine API für meine Web-App zu erstellen. Ich habe eine Klasse 'Kommentar', die depth=2
in der Klasse Meta
hat. Dies funktioniert sehr gut, wenn GET
in Comments
ist. Wenn ich versuche, eine POST
oder PUT
Anfrage zu senden (d. H. Eine neue Comment
erstellen), wird mir gesagt, dass ich Objekte anstelle von ForeignKey IDs einfügen muss.
Hier ist meine Serializer-Klasse:
%Vor%Das Modell:
%Vor%Der Ansichtscode:
%Vor%Und der Fehler, der in der Ausgabe (JSON) angezeigt wird, ist:
%Vor%Wenn diese Rohdaten gesendet werden:
%Vor% Ich glaube, der richtige Weg, um ein Serializer-Feld zu definieren, das sich auf eine Fremdschlüsselbeziehung bezieht, ist etwas wie serializers.PrimaryKeyRelatedField
. Ich glaube nicht, dass Model-Serializer diese Feldklasse automatisch verwenden, ohne sie explizit in der Serializer-Klasse zu definieren.
Ich würde mir vorstellen, dass ein PrimaryKeyRelatedField
Serializer JSON-Datenübertragungen, wie sie in Ihrem Beispiel verwendet wurden, korrekt behandelt.
Ich weiß, das ist ein bisschen spät, aber ich habe am Ende 2 Serialisierer verwendet:
%Vor%Dann wie folgt verwendet:
%Vor% Sie können verschiedene Serializer setzen, indem Sie die Funktion get_serializer_class()
wie folgt überschreiben:
def get_serializer_class(self):
method = self.request.method
if method == 'PUT' or method == 'POST':
return YourWriteSerializer
else:
return YourReadSerializer
Ich dachte daran, diesen hier hinzuzufügen, da ich nach einiger Zeit vom Googling hierher kam.
Tags und Links python django rest django-rest-framework