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():
....
TrueQuerySet herhangi bir sonuç içeriyorsa veFalsedeğ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")