Подтвердить что ты не робот

Проверка Django для любого существует для запроса

В django, как проверить, существует ли какая-либо запись для запроса

sc=scorm.objects.filter(Header__id=qp.id)

Так было сделано в php

if(mysql_num_rows($resultn)) {
    // True condition
    }
else {
    // False condition
    }
4b9b3361

Ответ 1

Используйте 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 ...

Update: также можно использовать exists():

if scorm.objects.filter(Header__id=qp.id).exists():
    ....

Возвращает True, если QuerySet содержит любые результаты, а False, если нет. Это пытается выполнить запрос самым простым и быстрым способом, но он выполняет почти тот же запрос, что и обычный запрос QuerySet.