if和if exist()之间的区别?

BSG*_*BSG 3 django django-queryset

接受任何给定的查询集, qs = QS.objects.filter(active=True)

我之间有区别吗?

if qs:
Run Code Online (Sandbox Code Playgroud)

if qs.exists():
Run Code Online (Sandbox Code Playgroud)

关于数据库的负载,等等?

And*_*zlo 5

是的,有一个区别:

  • if qs将使用该对象的__nonzero__方法,该方法实际上会调用一个完整的查询(无论如何,这就是我的解释方式)。QuerySet_fetch_all
  • exists()正如Ewan指出的,它可以使工作效率更高。这就是为什么存在这种方法的原因。

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