Sto cercando di creare una visualizzazione di aggiornamento di massa per un modello specifico utilizzando Django Rest Framework. A breve termine, è sufficiente aggiornare un campo (alternando un invito da submit = False a submitted = True), ma mi piacerebbe che fosse in grado di fornire più funzionalità in futuro. Ogni volta che provo la vista, tuttavia, viene creato un nuovo oggetto anziché quello corrente che viene modificato.Aggiornamento bulk di Django Rest Framework che inserisce invece di aggiornare
Credo che questo debba essere un semplice errore da parte mia, ma non riesco a capire cosa sta succedendo. Sembra che l'oggetto serializzatore stia ignorando il valore di "id" passato attraverso JSON, che potrebbe contribuire al problema. Il codice corrente è:
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')
Qualcuno può far luce su ciò che potrei fare male?
Avevi ragione; il pezzo mancante stava impostando il queryset. Non sono sicuro di cosa ho modificato da un precedente tentativo, ma prima del mio post avevo tentato di passare in un queryset e ho ricevuto un errore dicendo che serializer.save() non era un attributo, quindi ho pensato che causasse il problema. Ho funzionato, grazie! – user2708386