python - template - Django comprueba si existe alguna para una consulta
httpresponseredirect django (2)
A partir de Django 1.2, puede utilizar exists() :
https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
En django cómo comprobar si existe alguna entrada para una consulta
sc=scorm.objects.filter(Header__id=qp.id)
Así fue como se hizo en php.
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Utilice count() :
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
La ventaja sobre, por ejemplo, len() es que aún no se ha evaluado el QuerySet:
count()realiza unSELECT COUNT(*)detrás de escena, por lo que siempre debe usarcount()lugar de cargar todo el registro en objetos de Python y llamar alen()en el resultado.
Teniendo esto en cuenta, cuando se evalúan los QuerySets puede valer la pena leerlos.
Si usa get() , por ejemplo, scorm.objects.get(pk=someid) , y el objeto no existe, se ObjectDoesNotExist una excepción ObjectDoesNotExist :
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Actualización: también es posible utilizar exists() :
if scorm.objects.filter(Header__id=qp.id).exists():
....
Devuelve
Truesi el QuerySet contiene algún resultado, yFalsesi no. Esto intenta realizar la consulta de la manera más simple y rápida posible, pero ejecuta casi la misma consulta que una consulta normal de QuerySet.