W django, jak sprawdzić, czy istnieje wpis dla zapytania
sc=scorm.objects.filter(Header__id=qp.id)
Tak to zostało zrobione w php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
W django, jak sprawdzić, czy istnieje wpis dla zapytania
sc=scorm.objects.filter(Header__id=qp.id)
Tak to zostało zrobione w php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Odpowiedzi:
Zastosowanie count():
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Zaletą nad np. len()Jest to, że zestaw QuerySet nie jest jeszcze oceniany:
count()wykonujeSELECT COUNT(*)za kulisami, więc powinieneś zawsze używaćcount()zamiast ładować cały rekord do obiektów Pythona i wywoływaćlen()wynik.
Mając to na uwadze, warto przeczytać , kiedy QuerySets są oceniane .
Jeśli użyjesz get()np scorm.objects.get(pk=someid), a obiekt nie istnieje, ObjectDoesNotExistzostanie zgłoszony wyjątek:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Aktualizacja:
można również użyć exists():
if scorm.objects.filter(Header__id=qp.id).exists():
....
Zwraca,
Truejeśli QuerySet zawiera jakiekolwiek wyniki, aFalsejeśli nie. To próbuje wykonać zapytanie w najprostszy i najszybszy możliwy sposób , ale wykonuje prawie to samo zapytanie, co zwykłe zapytanie QuerySet.
if scorm.objects.filter(Header__id=qp.id).exists()
Od wersji Django 1.2 możesz używać 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=...)trasa
to działało dla mnie!
if some_queryset.objects.all (). exist (): print ("ta tabela nie jest pusta")