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
}
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
}
Respuestas:
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 unSELECT COUNT(*)
detrás de escena, por lo que siempre debe usar encount()
lugar de cargar todo el registro en objetos de Python y llamarlen()
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 ObjectDoesNotExist
excepció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
True
si el QuerySet contiene algún resultado yFalse
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.
if scorm.objects.filter(Header__id=qp.id).exists()
A partir de Django 1.2, puede usar exists()
:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
.objects.get(pk=...)
ruta
esto funcionó para mí!
if some_queryset.objects.all (). existe (): print ("esta tabla no está vacía")