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.

Schreibe einen Kommentar