Try & except не работает в Django APIView
I have written logic to delete an item in the apiview of Django. The logic is to assign that item to a variable and by using Try and Except. It works fine when there is an object but when there is no object I got an error saying "leads.models.Lead.DoesNotExist: Lead matching query does not exist."
Я должен получить сообщение Deal doesn't exist со статусом 400, так как у меня это было внутри Except. Я получаю 500 ошибку в посте.
def delete(self, request,pk, *args, **kwargs):
id = pk
lead = Lead.objects.get(id=id)
# abc.delete()
# return Response({"message": "Lead has been deleted"},
# status=status.HTTP_200_OK)
try:
lead = Lead.objects.get(id=id)
if lead.delete():
return Response({
"message": "Deals has been deleted"
},status=status.HTTP_204_NO_CONTENT)
except lead.DoesNotExist:
return Response({
"message": "Deal doesnt exist"
},status=status.HTTP_400_BAD_REQUEST)
Мои урлы таковы:
path('lead/<int:pk>', ChunksLeadCreate.as_view()),
Я надеюсь, что этого кода достаточно, чтобы решить проблему.
Я закомментировал назначение lead перед Lead.Doesnot exist и это сработало.
def delete(self, request,pk, *args, **kwargs):
id = pk
# lead = Lead.objects.get(id=id)
# abc.delete()
# return Response({"message": "Lead has been deleted"},
# status=status.HTTP_200_OK)
try:
lead = Lead.objects.get(id=id)
if lead.delete():
return Response({
"message": "Deals has been deleted"
},status=status.HTTP_204_NO_CONTENT)
except Lead.DoesNotExist:
return Response({
"message": "Deal doesnt exist"
},status=status.HTTP_400_BAD_REQUEST)