In 2.x hatten wir einen Serializer, die aussah:Kanonische Methode, um in django-rest-framework 3.x Massen zu erstellen?
class FooSerializer(serializers.ModelSerializer):
bar = serializers.PrimaryKeyRelatedField()
class Meta:
model = Foo
Diese Masse zu handhaben effektiv in der Lage war erzeugt (ein list
als der Körper einer JSON Post-Anforderung vorbei). In 3.x ist dieser Endpunkt unterbrochen. Ich habe versucht, etwas similar to the docs on DRF
class FooListSerializer(serializers.ListSerializer):
def create(self, validated_data):
foos = [Foo(**item) for item in validated_data]
return Foo.objects.bulk_create(foos)
class FooSerializer(serializers.ModelSerializer):
bar = serializers.PrimaryKeyRelatedField(
queryset=Bar.objects.all()
)
class Meta:
model = Foo
list_serializer_class = FooListSerializer
umzusetzen Und während dies für eine einzelne erstellen Anfrage funktioniert, wenn ich versuche, eine Liste, die ich den Fehler passieren:
AttributeError: 'FooListSerializer' object has no attribute 'object'
ich einige Hacks gesehen habe wo __init__
ist Super'd, aber es scheint mit der Schaffung der ListSerializer
Klasse in 3.x muss es eine sauberere Möglichkeit, dies zu tun. Danke im Voraus.
Mögliche Duplikat von [Wie schreiben/put json Daten ListSerializer] (http://stackoverflow.com/a/27871396/359284). Dort finden Sie meine ausführliche Antwort mit Beispielen für die Handhabung von Massenerstellung/-aktualisierung/-löschung. –
Eigentlich wollte ich gerade Ihre Frage kommentieren - Ihre Lösung hat für mich funktioniert (danke eine Tonne), und ich glaube, dass diese verwandt sind, aber ich vermute, dass die "kanonische" Lösung noch nicht implementiert wurde? –
Ich sollte erwähnen, dass Ihr bisheriger Weg seit 2.4 unterbrochen wurde, als DRF die Fähigkeit für eine Liste löschte, automatisch als "viele = Wahr" interpretiert zu werden. –