In Django, wie überprüft wird, ob ein Eintrag für eine Abfrage vorhanden ist
sc=scorm.objects.filter(Header__id=qp.id)
So wurde es in PHP gemacht
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
In Django, wie überprüft wird, ob ein Eintrag für eine Abfrage vorhanden ist
sc=scorm.objects.filter(Header__id=qp.id)
So wurde es in PHP gemacht
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Antworten:
Verwendung count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Der Vorteil gegenüber zB len()
ist, dass das QuerySet noch nicht ausgewertet wird:
count()
führt einen BlickSELECT COUNT(*)
hinter die Kulissen aus, daher sollten Sie immer dencount()
gesamten Datensatz verwenden, anstatt ihn in Python-Objekte zu laden undlen()
das Ergebnis aufzurufen .
Vor diesem Hintergrund kann es sich lohnen , wenn QuerySets ausgewertet werden.
Wenn Sie get()
z. B. verwenden scorm.objects.get(pk=someid)
und das Objekt nicht vorhanden ist, wird eine ObjectDoesNotExist
Ausnahme ausgelöst:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Update:
Es ist auch möglich zu verwenden exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
Gibt zurück,
True
ob das QuerySet Ergebnisse enthält, undFalse
wenn nicht. Dadurch wird versucht, die Abfrage auf einfachste und schnellste Weise durchzuführen, es wird jedoch fast dieselbe Abfrage wie bei einer normalen QuerySet-Abfrage ausgeführt.
if scorm.objects.filter(Header__id=qp.id).exists()
Ab Django 1.2 können Sie Folgendes verwenden exists()
:
https://docs.djangoproject.com/de/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
.objects.get(pk=...)
Route