In django come verificare se esiste una voce per una query
sc=scorm.objects.filter(Header__id=qp.id)
Ecco come è stato fatto in php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
In django come verificare se esiste una voce per una query
sc=scorm.objects.filter(Header__id=qp.id)
Ecco come è stato fatto in php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Risposte:
Usa count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Il vantaggio rispetto ad esempio len()
è che il QuerySet non è ancora valutato:
count()
esegue unSELECT COUNT(*)
dietro le quinte, quindi dovresti sempre usarecount()
piuttosto che caricare tutto il record negli oggetti Python e chiamarelen()
il risultato.
Tenendo presente questo, può valere la pena leggere quando vengono valutati i set di query .
Se usi get()
, ad esempio scorm.objects.get(pk=someid)
, e l'oggetto non esiste, ObjectDoesNotExist
viene sollevata un'eccezione:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Aggiornamento:
è anche possibile utilizzare exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
Restituisce
True
se QuerySet contiene risultati e inFalse
caso contrario. Questo tenta di eseguire la query nel modo più semplice e veloce possibile, ma esegue quasi la stessa query di una normale query QuerySet.
if scorm.objects.filter(Header__id=qp.id).exists()
A partire da Django 1.2, puoi usare 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=...)
percorso
questo ha funzionato per me!
if some_queryset.objects.all (). exist (): print ("questa tabella non è vuota")