Django'da bir sorgu için herhangi bir girdi olup olmadığı nasıl kontrol edilir
sc=scorm.objects.filter(Header__id=qp.id)
Bu php'de böyle yapıldı
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Django'da bir sorgu için herhangi bir girdi olup olmadığı nasıl kontrol edilir
sc=scorm.objects.filter(Header__id=qp.id)
Bu php'de böyle yapıldı
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Yanıtlar:
Kullanım count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Örneğin len()
, QuerySet'in henüz değerlendirilmediği için avantajı :
count()
SELECT COUNT(*)
perde arkasında bir gerçekleştirir , bu nedenlecount()
tüm kaydı Python nesnelerinelen()
yüklemek ve sonucu çağırmak yerine her zaman kullanmalısınız .
Bunu akılda tutarak, QuerySets değerlendirildiğinde okumaya değer olabilir.
Eğer kullanırsanız get()
, örneğin scorm.objects.get(pk=someid)
, ve nesne da mevcut değil, bir ObjectDoesNotExist
özel duruma neden:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Güncelleme:
aşağıdakileri kullanmak da mümkündür exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
True
QuerySet herhangi bir sonuç içeriyorsa veFalse
değilse döndürür . Bu, sorguyu mümkün olan en basit ve en hızlı şekilde gerçekleştirmeye çalışır , ancak normal bir QuerySet sorgusuyla hemen hemen aynı sorguyu yürütür.
if scorm.objects.filter(Header__id=qp.id).exists()
Django 1.2'den itibaren şunları kullanabilirsiniz exists()
:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
.objects.get(pk=...)
rotadan daha hızlı görünüyor
bu benim için çalıştı!
some_queryset.objects.all (). varsa (): print ("bu tablo boş değil")