检查对象是否存在并给出响应的最简单方法

时间:2018-10-02 04:04:50

标签: python django django-rest-framework

我有一个代码段,该代码段在ViewSet中重复了几次:

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 :(得分:1)

我认为这是使用try..except子句检查对象存在bu的 pythonic方式("Ask forgiveness, not permission"

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中找到一个很好的SO post here来询问相同的问题,它说 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)