Django检查查询是否存在?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (285)

在Django中,如何检查查询中是否存在任何条目

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

在php中就是这样做的:

if(mysql_num_rows($resultn)) {
    // True condition
    }
else {
    // False condition
    }
提问于
用户回答回答于

使用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():
    ....

True如果QuerySet包含任何结果,False则返回结果,如果不包含结果。这尽可能以最简单和最快的方式执行查询,但它确实执行与普通QuerySet查询几乎相同的查询。

用户回答回答于

从Django 1.2开始,可以使用exists():

if some_queryset.filter(pk=entity_id).exists():
    print("Entry contained in queryset")

扫码关注云+社区

领取腾讯云代金券