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)
Вернуться на верх