Django Rest APIでコレクションを削除するにはどうすればよいですか。
-
20-12-2019 - |
質問
Django APIビューでコレクションを読み込むときに「削除」を取得するためにしばらくしています。私は '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)
.
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