Uso count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
La ventaja sobre, por ejemplo, len()
es decir, que el QuerySet aún no se evalúa:
count()
realiza una SELECT COUNT(*)
detrás de las escenas, por lo que siempre debe utilizar count()
en lugar de cargar todos los registros en objetos de Python y llamando len()
en el resultado.
Teniendo esto en cuenta, puede valer la pena leer When QuerySets are evaluated.
Si utiliza get()
, por ejemplo, scorm.objects.get(pk=someid)
, y el objeto no existe, una excepción ObjectDoesNotExist
se eleva:
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():
....
devoluciones True
si el QuerySet contiene ningún resultados, y False
si 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 QuerySet normal.
duplicado posible de [¿cuál es la manera correcta para validar si existe un objeto en una vista de Django sin devolver 404? ] (http://stackoverflow.com/questions/639836/what-is-the-right-way-to-validate-if-an-object-exists-in-a-django-view-without-r) – Wtower