장고 → 지연로딩(lazy loading)이라는 기술을 사용
데이터를 실제로 사용할 때 DB로 쿼리를 전송한다.
articles = Article.objects.all()
이때는 안하고
print문으로 출력했을 때 쿼리문을 2번 호출한다.
print(articles[0].title)
print(articles[1].title)
즉, 실제로 사용할 때 쿼리문이 DB로 전송된다
# articles: 전체 데이터 가져오기 1번
for article in articles:
# article 이 가지고 있음 -> 안함
print(article.title)
# 정참조 -> 호출 -> N번
print(article.user.username)
# 역참조 -> 호출 -> N번
print(article.comment_set.all())
정참조와 역참조시에도 호출이 된다
이를 늘 유의해야함 → 성능에 큰 영향
'BackEnd > Django' 카테고리의 다른 글
[Django] API와 REST (0) | 2023.10.18 |
---|---|
[Django] 댓글 구현(N : 1) (0) | 2023.10.17 |
[Django] Fixtures (0) | 2023.10.17 |
[Django] N:M 팔로우 기능 구현 (1) | 2023.10.17 |
[Django] N:M 프로필 만들기 (0) | 2023.10.17 |