Ich versuche, eine Bulk-Update-Ansicht für ein bestimmtes Modell mit Django Rest Framework zu erstellen. Kurzfristig muss nur ein Feld aktualisiert werden (indem eine Einladung von submitted = False auf submitted = True umgeschaltet wird), aber ich möchte, dass sie in der Zukunft mehr Funktionalität bereitstellen kann. Immer wenn ich die Ansicht teste, wird jedoch ein neues Objekt erstellt, anstatt dass das aktuelle Objekt geändert wird.Django Rest Framework Bulk-Updates Einfügen statt zu aktualisieren
Ich denke, das muss ein einfacher Fehler meinerseits sein, aber ich kann nicht herausfinden, was vor sich geht. Das Serialisierungsobjekt scheint den Wert für "ID" zu ignorieren, der über JSON übergeben wurde und möglicherweise zum Problem beiträgt. Aktueller Code ist:
class InviteBulkUpdateView(generics.UpdateAPIView):
def get_queryset(self):
order = self.kwargs['order']
invite = get_objects_for_user(self.request.user, 'sourcing.view_invite')
return invite.filter(order=order)
serializer_class = InviteInputSerializer
def put(self, request, *args, **kwargs):
data = request.DATA
serializer = InviteInputSerializer(data=data, many=True)
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
class InviteInputSerializer(serializers.ModelSerializer):
class Meta:
model = Invite
fields = ('id', 'order', 'team', 'submitted')
Kann jemand etwas Licht auf das werfen, was ich möglicherweise falsch mache?
Sie hatten Recht; Das fehlende Teil setzte das Abfrage-Set. Ich bin mir nicht sicher, was ich von einem früheren Versuch geändert habe, aber vor meinem Post hatte ich versucht, einen Queryset zu übergeben und bekam einen Fehler, der sagte, dass serializer.save() kein Attribut war, also nahm ich an, dass es das Problem verursachte. Habe es funktioniert, danke! – user2708386