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)
,并且该对象不存在,则会引发ObjectDoesNotExist
exception:
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")