В django как проверить, существует ли какая-либо запись для запроса
sc=scorm.objects.filter(Header__id=qp.id)
Вот как это было сделано на php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
В 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.
if scorm.objects.filter(Header__id=qp.id).exists()
Начиная с 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")
.objects.get(pk=...)
это сработало для меня!
if some_queryset.objects.all (). exists (): print («эта таблица не пуста»)