Проверка Django для любого существует для запроса
в django как проверить, существует ли какая-либо запись для запроса
sc=scorm.objects.filter(Header__id=qp.id)
вот как это было сделано в php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
2 ответа:
использовать
count()
:sc=scorm.objects.filter(Header__id=qp.id) if sc.count() > 0: ...
преимущество перед, например,
len()
является то, что QuerySet еще не оценивается:
count()
выполняетSELECT COUNT(*)
за кулисами, так что вы должны всегда использоватьcount()
вместо того, чтобы загружать все записи в объекты Python и называяlen()
на результат.имея это в виду, при вычислении запросов может быть стоит чтение.
если вы используете
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
если запрос содержит какие-либо результаты, иFalse
если не. Это пытается выполнить запрос самым простым и быстрым способом возможно, но он выполняет почти то же самое запрос, как в обычном запросе объект QuerySet.
начиная с Django 1.2, вы можете использовать
exists()
:https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists(): print("Entry contained in queryset")