Самый простой способ проверить объект существует и дать ответ - PullRequest
0 голосов
/ 02 октября 2018

У меня есть фрагмент кода, который повторяется несколько раз в моих ViewSets:

def accept(self, request, pk):
    if not Company.objects.filter(pk=pk).exists():
        return Response({"message": "Error"},
                        status=status.HTTP_405_METHOD_NOT_ALLOWED)

Похоже, я делаю это слишком сложно.Это способ сделать это проще?Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Я думаю, что это питонический способ ( "Просить прощения, а не разрешения" ) , чтобы проверить существование объекта, используя try..except предложение

def accept(self, request, pk):
    try:
        Company.objects.get(pk=pk)
        return Response({"message": "Success"})
    except Company.DoesNotExist:
        return Response({"message": "Error"}, status=status.HTTP_405_METHOD_NOT_ALLOWED)



Вы можете найти хороший ТАК пост здесь , который спрашивает то же самое в Django perspective, который говорит, что exists() быстрее try..except

Итак, вы можете переписать свой код примерно так:

def accept(self, request, pk):
    if Company.objects.filter(pk=pk).exists():
        return Response({"message": "Success"})
    return Response({"message": "Error"}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...