QuerySet은 언제 Evaluate될까?

폐쇄맨·2020년 11월 10일
0

QuerySet 객체는 평가되기(Evaluated) 전 까지 데이터베이스에 직접 영향을 주지 않는다. QuerySet에 필터링을 하여 또 다른 QuerySet을 얻을 수 있지만, QuerySet이 평가되기 전까지 절대 데이터베이스 Hit를 하는 일이 없다. QuerySet이 평가될 때, SQL 쿼리를 데이터베이스에서 실행하게 된다.

다음과 같은 경우에 QuerySet은 평가된다:

  • 쿼리셋을 처음 반복(iterate)할 때
  • 슬라이싱 할 때, Pizza.objects.all()[:3]
  • pickle 하거나 cache 할 때
  • repr() 이나 len()을 호출 할 때
  • list()를 명시적으로 호출할 때
  • bool(), or, and, if 와 같은 문장에서 사용될 때
profile
폐쇄맨

0개의 댓글