在Django中如何检查查询是否存在任何条目
sc=scorm.objects.filter(Header__id=qp.id)
这就是在php中完成的方式
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Answers:
用途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查询几乎相同。
if scorm.objects.filter(Header__id=qp.id).exists()
从Django 1.2开始,您可以使用exists()
:
https://docs.djangoproject.com/zh-CN/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
.objects.get(pk=...)
路线快
这对我有用!
如果some_queryset.objects.all()。exists():print(“此表不为空”)