Utilisez count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
L'avantage par rapport à par exemple len()
est que le QuerySet n'est pas encore évalué:
count()
effectue une SELECT COUNT(*)
analyse des coulisses, vous devez donc toujours utiliser count()
plutôt que de charger tout l'enregistrement dans des objets Python et appeler len()
le résultat.
En gardant cela à l'esprit, lorsque les QuerySets sont évalués, cela vaut la peine d'être lu.
Si vous utilisez get()
, par exemple scorm.objects.get(pk=someid)
, et que l'objet n'existe pas, une ObjectDoesNotExist
exception est déclenchée:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Mise à jour:
il est également possible d'utiliser exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
Renvoie True
si le QuerySet contient des résultats, et False
sinon. Cela tente d'exécuter la requête de la manière la plus simple et la plus rapide possible, mais il exécute presque la même requête qu'une requête QuerySet normale.