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

Posted

技术标签:

【中文标题】在 Django 中检查空查询集的正确方法是啥?【英文标题】:What is the proper way to check an empty queryset in Django?在 Django 中检查空查询集的正确方法是什么? 【发布时间】:2018-10-05 00:23:31 【问题描述】:
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)

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

【问题讨论】:

if queryset.exists(): 返回 True 且查询集为空 可能复制到:***.com/questions/1387727/… 你能发布完整的代码吗? 或者你使用内置的快捷功能get_list_or_404Docs @tatlar 该线程已有 10 年历史。 【参考方案1】:

试试这个:

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)

【讨论】:

以上是关于在 Django 中检查空查询集的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 的 ORM 和 Django Rest Framework 序列化嵌套关系的查询集的正确方法?

检查空值的正确方法是啥?

有没有办法检查字符串是不是是 django 查询集的有效过滤器?

检查输入字段中的空值的正确方法是啥[重复]

JPA:迭代大型结果集的正确模式是啥?

使用 .NET 数据集的正确方法是啥? [关闭]