我有一个代码段,该代码段在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)
看来我做的太复杂了。这是使其更简单的方法吗?谢谢!
答案 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)