在 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_404
Docs
@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 序列化嵌套关系的查询集的正确方法?