Django Rest Api에서 컬렉션을 어떻게 삭제하나요?
-
20-12-2019 - |
문제
나는 Django Api View에서 컬렉션을 읽을 때 'DELETE'가 작동하도록 잠시 동안 노력해 왔습니다.나는 'ListCreateAPIView'를 사용해 왔으며 get 및 post 메소드 핸들러만 제공합니다.이 문제를 해결하는 방법을 아는 사람이 있나요?
내 견해:
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'])
해결책
add :
def get_object(self, notepad_pk):
try:
return Notepad.objects.get(user=self.request.user, pk=notepad_pk)
except Notepad.DoesNotExist:
raise Http404
def delete(self, request, notepad_pk, format=None):
object = self.get_object(notepad_pk)
object.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
. 다른 팁
당신은 사용할 수 있습니다 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)
그만큼 self.destroy
에서 제공하는 방법 DestroyModelMixin
객체 삭제를 처리하고 pre_delete
그리고 post_delete
신호를 보내고 204 NO CONTENT
상태.
def delete(self, request, pk, format=None):
event = self.get_object(pk)
event.delete()
return Response("Object Deleted")
. 제휴하지 않습니다 StackOverflow