簡體   English   中英

如何在Django Rest Api中刪除集合?

[英]How do I delete a collection in Django Rest Api?

我已經嘗試了一段時間,以便在Django Api View中讀取集合時使“刪除”工作。 我一直在使用“ 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'])

通過添加以下內容解決了該問題:

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)

DestroyModelMixin提供的self.destroy方法將處理對象刪除,將正確引發pre_deletepost_delete信號,並返回204 NO CONTENT狀態。

def delete(self, request, pk, format=None):
           event = self.get_object(pk)
           event.delete()
           return Response("Object Deleted")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM