Django comprueba si existe alguna consulta


Respuestas:


87

Utilizar count():

sc=scorm.objects.filter(Header__id=qp.id)

if sc.count() > 0:
   ...

La ventaja sobre eg len()es que el QuerySet aún no se ha evaluado:

count()realiza un SELECT COUNT(*)detrás de escena, por lo que siempre debe usar en count() lugar de cargar todo el registro en objetos de Python y llamar len() al resultado.

Teniendo esto en cuenta, puede valer la pena leer cuando se evalúan los QuerySets .


Si usa get(), por ejemplo scorm.objects.get(pk=someid), y el objeto no existe, se genera una ObjectDoesNotExistexcepción:

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 y Falsesi 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.


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

@Alex Lebedev: Sí, este método estará disponible en Django 1.2. Gracias.
Felix Kling


0

esto funcionó para mí!

if some_queryset.objects.all (). existe (): print ("esta tabla no está vacía")

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.