Django는 쿼리에 대해 존재하는지 확인합니다.


답변:


87

사용 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 쿼리와 거의 동일한 쿼리를 실행합니다.


51
if scorm.objects.filter(Header__id=qp.id).exists()
Alexander Lebedev

@Alex Lebedev : 예,이 방법은 Django 1.2에서 사용할 수 있습니다. 감사합니다.
Felix Kling


0

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.