Created
August 17, 2020 08:17
-
-
Save KimSoungRyoul/2f398898132f02a559d890b5704f0fa8 to your computer and use it in GitHub Desktop.
Django QuerySet 구성요소 간단하게
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db.model.sql import Query # Query()는 개발자가 정의한 QuerySet을 읽어서 실제 SQL을 생성해주는 구현체다 | |
class QuerySet: | |
query: Query = Query() # 이것을 나는 메인쿼리 라고 명명한다. | |
_result_cache: List[Dict[Any,Any]] = dict() # SQL의 수행결과를 여기 저장해놓고 재사용한다 (QuerySet Cache) | |
# QuerySet 재호출시 이 프로퍼티에 저장된 데이터가 없으면 SQL을 호출해서 데이터를 가져온다. | |
_prefetch_related_lookups: Tuple[str] = () # prefetch_related(여기선언된 값들) 을 이 프로퍼티에 저장함 | |
# 이것을 나는 추가쿼리(셋)이라고 명명한다. | |
_iterable_class = ModelIterable # sql결과값(resultset)을 python의 어떤 자료구조로 반환받을것인가? 를 선언하는 프로퍼티 | |
# 이 값은 직접 수정하지 않고 QuerySet.values() .values_list()를 사용하면 알아서 변한다. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment