В django, как проверить, существует ли какая-либо запись для запроса
sc=scorm.objects.filter(Header__id=qp.id)
Это было то, как это было сделано в php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
Используйте count ()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Преимущество перед, например, len ()
означает, что QuerySet еще не вычислен:
count ()
выполняетSELECT COUNT (*)
за кулисами, поэтому вы всегда должны использоватьcount ()
вместо загрузки всей записи в объекты Python и вызоваlen ()
для получения результата.
Имея это в виду, Когда оцениваются QuerySets, стоит прочитать.
Если вы используете get ()
, например scorm.objects.get (pk = someid)
, а объект не существует, возникает исключение ObjectDoesNotExist
:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Обновление:
это также можно использовать exists ()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
Возвращает
True
, если QuerySet содержит какие-либо результаты, иFalse
в противном случае. Он пытается выполнить запрос самым простым и быстрым из возможных способов , но выполняет почти тот же запрос, что и обычный запрос QuerySet.