在 Django 中检查空查询集的正确方法是什么?

dav*_*vid 4 django django-queryset

queryset = demo.objects.filter(name="non_existent_name")

if queryset.exists():
    serializer = DemoSerializer(queryset, many=True)
    return Response(serializer.data)
else:
    return Response(status=status.HTTP_404_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)

使用空查询集 - 我期待 404,但却得到带有空序列化响应的 200。我的代码有什么问题吗?为什么exists() 不能按预期工作?

小智 5

尝试这个:

queryset = demo.objects.filter(name="non_existent_name")

if queryset:
    serializer = DemoSerializer(queryset, many=True)
    return Response(serializer.data)
else:
    return Response(status=status.HTTP_404_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)