Es gibt zwei Modelle: Product
und Picture
. Jedes Product
kann mehrere Picture
s haben. Ich habe Fragen, wenn ich ein Produkt mit POST erstellen möchte. Wie verschicken Sie ein verschachteltes Objekt, das eine ImageField-Liste enthält?
Das Product
-Modell ist:
Das Picture
-Modell ist:
Ich schreibe die serializer.py wie folgt:
%Vor%Die Ansicht, die ich verwende, ist:
%Vor%Ich registriere es in den URLs als:
%Vor%Die Fragen sind:
django-rest-framework
mir sagt, dass "Listen derzeit nicht in HTML-Eingabe unterstützt werden" Product
-Ressourcen mit mehreren Pictures
zu POST zu senden. ODER Ich muss multipart Parser verwenden. Sie müssen mehrteiligen Parser verwenden, sobald Sie binäre Daten senden müssen Sie im Grunde nur Entscheidungen:
Ein Ansatz, der häufig zu sehen ist, besteht darin, eine (nicht ruhende) Ansicht zu erstellen, um einzelne / mehrere Dateien hochzuladen, die File
oder Document
Objekte erstellen (beim Upload wird eine ID zurückgegeben). Dann können Sie diese ID (s) verwenden, die eine andere Anfrage, in Ihrem Fall erstellen / aktualisieren Ihre Product
.
Im Allgemeinen gibt es keinen einfachen Weg dies zu tun, weil json keine binären Daten unterstützt.
DRF macht das ganz einfach. Sie sind in der Nähe, Sie müssen ProductSerializer.create
überschreiben, etwa so:
Es gibt ein vollständiges Beispiel in den Dokumenten, hier: Ссылка
Für Ihren curl
-Befehl wird etwas wie folgt aussehen:
curl -X POST http://localhost:8000/products/ -H 'ContentType: application/json' -d '{"pictures": [{"description": "first one"}, {"description": "second one"}], "product_name": "foobar"}'
Tags und Links json curl post django-rest-framework imagefield