ModelViewSet - Update geschachtelten Feld
Zur Zeit arbeite ich an Django-mit Django Rest Framwork.
Kann ich nicht aktualisieren, mein Objekt in verschachtelten Objekt-Feld.
serializer.py
class OwnerSerializer(serializers.ModelSerializer):
class Meta:
model = Owner
fields = ('id', 'name')
class CarSerializer(serializers.ModelSerializer):
owner = ownerSerializer(many=False, read_only=False)
class Meta:
model = Car
fields = ('id', 'name', 'owner')
view.py
class OwnerViewSet(viewsets.ModelViewSet):
queryset = Owner.objects.all()
serializer_class = OwnerSerializer
class CarViewSet(viewsets.ModelViewSet):
serializer_class = CarSerializer
queryset = Car.objects.all()
def create(self, request):
serialized = self.serializer_class(data=request.DATA)
if serialized.is_valid():
serialized.save()
return Response(status=HTTP_202_ACCEPTED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Wenn ich dies tun :
Request URL:http://localhost:9000/api/v1/cars/1/?format=json
Request Method:PUT
Request Paylod :
{
"id":1,
"name": "TEST",
"ower": {
"id":1,
"name": "owner_test"
}
}
Bekomme ich die folgende Antwort :
The `.update()` method does not support writable nestedfields by default.
Write an explicit `.update()` method for serializer `app.serializers.CarSerializer`,
or set `read_only=True` on nested serializer fields.
Wissen :
- Ich will, dass die Besitzer der Serialisierung auf GET;
- Wir uns vorstellen können, das Auto verschachtelt, indem ein anderes Objekt und ect...
Wie kann ich tun, wenn ich will, um den Besitzer zu ändern, wenn ich ein update für das Auto.
- möglich, Duplikat der django-rest-framework 3.0 erstellen oder aktualisieren, die in serializer geschachtelt
- Tanks ! Ich wiederhole mich, sorry, aber warum das überschreiben ist in den serializer und nicht in der Ansicht, wie : Django-doc, auf diese Weise kann die Rückkehr status ??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist ein wenig spät, aber Versuchen Sie dies,
Just-in-Fall, dass jemand stolpert auf dieser
hatte den gleichen Fehler in meinem Fall aber die Einstellung read_only auf True fest für mich.
Beachten Sie, dass dieses Feld nicht im Formular angezeigt, wenn die Buchung der Daten an die api.