Django检查是否存在查询


Answers:


86

用途count()

sc=scorm.objects.filter(Header__id=qp.id)

if sc.count() > 0:
   ...

与例如相比,优点len()是尚未评估QuerySet:

count()SELECT COUNT(*)在幕后执行,所以您应该始终使用count() 而不是将所有记录加载到Python对象中并调用len() 结果。

考虑到这一点,当评估QuerySet时值得一读。


如果使用get(),例如scorm.objects.get(pk=someid),并且对象不存在,ObjectDoesNotExist则会引发异常:

from django.core.exceptions import ObjectDoesNotExist
try:
    sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
    print ...

更新: 也可以使用exists()

if scorm.objects.filter(Header__id=qp.id).exists():
    ....

返回TrueQuerySet是否包含任何结果,False否则返回。这试图以最简单,最快的方式执行查询,但是它执行的查询与普通QuerySet查询几乎相同。


51
if scorm.objects.filter(Header__id=qp.id).exists()
亚历山大·列别捷夫

@Alex Lebedev:是的,此方法将在Django 1.2中可用。谢谢。
Felix Kling


0

这对我有用!

如果some_queryset.objects.all()。exists():print(“此表不为空”)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.