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

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

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

Это было то, как это было сделано в php

if(mysql_num_rows($resultn)) {
    // True condition
    }
else {
    // False condition
    }
76
задан Mauro Baraldi 29 February 2016 в 19:35
поделиться

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 ...

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

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

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

69
ответ дан 24 November 2019 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: