django - if 和 if exists() 的区别?

标签 django django-queryset

取任何给定的查询集,qs = QS.objects.filter(active=True)
我之间有区别吗:

if qs:


if qs.exists():

关于数据库上的负载等?

最佳答案

是的,有区别:

  • if qs将使用 __nonzero__ QuerySet的方法对象,它调用 _fetch_all这将反过来实际执行一个完整的查询(无论如何我都是这样解释的)。
  • exists()做一些更有效的事情,如 noted by Ewan .这就是为什么这种方法......存在。

  • 所以,简而言之,使用 exists()当您只需要检查是否存在时,因为这就是它的用途。

    关于django - if 和 if exists() 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22090635/

    相关文章:

    python - 来自 ManyToManyField 的 Django 最大相似度(TrigramSimilarity)

    django - 如何将登录用户的 ID 传递给 CreateView

    带有多个 S3 存储桶的 django 存储

    python - 有没有办法在作为表格的模板变量内执行 html?

    Django 使用列表过滤查询集

    python - 超出最大递归深度 - Django

    django - 基于 get_initial() 的 CBV CreateView 限制 ForeignKey

    python - Django 查询集过滤器 GT、LT、GTE、LTE 返回完整的对象列表

    python + django+ EmailMultiAlternatives Template'对象没有属性'encode

    python - 在 django 2.0 的 urls.py 中使用 path() 或 url() 会更好吗?