Prefetch로 실행되는 쿼리문을 list로 반환하고 캐시로 내장하는 기능
users = User.objects.prefetch_related(
Prefetch(
'profile',
queryset=Profile.objects.all(),
to_attr='profile_images'
)
)
profile_list = [ profile.avatar for profile in users.profile.all() ]
profile = [ profile.avatar for profile in users.profile_images ]
일반적으로 질의를 하게 됐을 경우, 접근할 때마다 질의를 수행하게 되고
그로 인해서 쿼리 양이 많아지게 된다.
- to_attr은 쿼리 결과를 리스트로 담고 있기 때문에 추가적인 쿼리가 발생하지 않으며
- 리스트로 반환된 질의 결과를 메모리에 올리기 때문에 바람직하다.