Django检查是否存在查询

在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()而不是将所有的logging加载到Python对象中,并在结果上调用len()

考虑到这一点, 当QuerySets被评估时可以值得阅读。


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

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

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

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

https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists

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