У 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=...)
маршрут
це спрацювало для мене!
якщо some_queryset.objects.all (). існує (): print ("ця таблиця не порожня")