У 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 ("ця таблиця не порожня")