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, ObjectDoesNotExist
zostanie 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,
True
jeśli QuerySet zawiera jakiekolwiek wyniki, aFalse
jeś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")