Próbuję utworzyć widok aktualizacji zbiorczej dla określonego modelu przy użyciu Django Rest Framework. W krótkim czasie wystarczy zaktualizować jedno pole (przełączając zaproszenie z przesłanego = Fałsz na przesłane = Prawda), ale chciałbym, aby było możliwe zapewnienie większej funkcjonalności w przyszłości. Ilekroć testuję widok, tworzony jest jednak nowy obiekt zamiast aktualnie modyfikowanego.Aktualizacje zbiorcze Django Rest Framework wstawiające zamiast aktualizowania
Czuję, że to musi być prosty błąd z mojej strony, ale nie mogę zrozumieć, co się dzieje. Obiekt serializera wydaje się ignorować wartość "id" przekazywaną przez JSON, co może przyczyniać się do problemu. Obecny kod to:
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')
Czy ktoś może rzucić nieco światła na to, co robię źle?
Miałeś rację; brakującym elementem było ustawienie zestawu zapytań. Nie jestem pewien, co zmieniłem z poprzedniej próby, ale przed moim posta próbowałem przekazać w queryset i dostałem błąd, twierdząc, że serializer.save() nie był atrybut, więc zakładałem, że spowodował problem. Rozumiem, dziękuję! – user2708386