Ich arbeite gerade an Django mit Django Rest Framwork.ModelViewSet - Verschachteltes Feld aktualisieren
Ich kann mein Objekt im verschachtelten Objektfeld nicht aktualisieren.
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 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 den Besitzer Serialisierung auf GET halten wollen;
- Wir können das Auto von einem anderen Objekt verschachtelt vorstellen und ect ...
Wie kann ich tun, wenn ich den Besitzer wechseln soll, wenn ich das Auto aktualisieren.
möglich duplizieren von [django-rest-framework 3.0 erstellen oder aktualisieren in verschachtelten Serializer] (http://stackoverflow.com/questions/27434593/django-rest-framework-3-0-create-or-update -in-nested-serializer) –
Tanks! Ich wiederhole mich selbst, tut mir leid, aber warum ist die Überschreibung im Serializer und nicht in der Ansicht, wie: [Django-doc] (http://www.django-rest-framework.org/api-guide/viewsets/#marking- Extra-Aktionen-für-Routing, auf diese Weise kann Status zurückgeben ?? –