[python] 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():
    ....

TrueQuerySet에 결과가 포함되어 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")


답변

이것은 나를 위해 일했습니다!

if some_queryset.objects.all (). exists () : print ( “이 테이블은 비어 있지 않습니다”)


답변