Django bir sorgu için var olup olmadığını kontrol eder


Yanıtlar:


89

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 nedenle count() tüm kaydı Python nesnelerine len() 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 ve Falsedeğ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.


52
if scorm.objects.filter(Header__id=qp.id).exists()
Alexander Lebedev

@Alex Lebedev: Evet, bu yöntem Django 1.2'de mevcut olacak. Teşekkür ederim.
Felix Kling


0

bu benim için çalıştı!

some_queryset.objects.all (). varsa (): print ("bu tablo boş değil")

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.