Wie lösche ich eine Sammlung in der Django Rest Api?
-
20-12-2019 - |
Frage
Ich habe jetzt schon eine Weile versucht, 'LÖSCHEN' zum Laufen zu bringen, wenn ich eine Sammlung in der Django-API-Ansicht lese.Ich habe 'ListCreateAPIView' verwendet und das bietet nur Handler für Get- und Post-Methoden.Weiß jemand, wie man das behebt?
Meine Ansicht:
class NotepadDetail(generics.ListCreateAPIView):
model = Session
serializer_class = SessionSerializer
def get_queryset(self):
user=self.request.user
notepad = self.kwargs['notepad_pk']
return Session.objects.filter(user=user, notepad=notepad)
def pre_save(self, obj):
obj.user = self.request.user
obj.notepad = get_object_or_404(Notepad, user=self.request.user, pk=self.kwargs['notepad_pk'])
Lösung
löste es durch Hinzufügen:
generasacodicetagpre.Andere Tipps
Sie können eine verwenden DestroyModelMixin
:
class NotepadDetail(generics.DestroyModelMixin,
generics.ListCreateAPIView):
model = Session
serializer_class = SessionSerializer
def get_queryset(self):
user=self.request.user
notepad = self.kwargs['notepad_pk']
return Session.objects.filter(user=user, notepad=notepad)
def pre_save(self, obj):
obj.user = self.request.user
obj.notepad = get_object_or_404(Notepad, user=self.request.user, pk=self.kwargs['notepad_pk'])
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
Der self.destroy
methode zur Verfügung gestellt von der DestroyModelMixin
behandelt das Löschen von Objekten, hebt die pre_delete
und post_delete
signalisiert und gibt die 204 NO CONTENT
Status.
generasacodicetagpre.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow