urls template httpresponseredirect examples example bootstrap python django django-views

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 un SELECT COUNT(*) detrás de escena, por lo que siempre debe usar count() lugar de cargar todo el registro en objetos de Python y llamar a len() 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 True si el QuerySet contiene algún resultado, 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 normal de QuerySet.