Bird
0
0

You want to efficiently load all Author objects with their Book objects, but only books published after 2020. How do you use prefetch_related for this filtered reverse relation?

hard📝 Application Q15 of 15
Django - Caching
You want to efficiently load all Author objects with their Book objects, but only books published after 2020. How do you use prefetch_related for this filtered reverse relation?
authors = Author.objects.prefetch_related( ... )
AUse Prefetch with a filtered queryset: <code>Prefetch('books', queryset=Book.objects.filter(pub_year__gt=2020))</code>
BUse prefetch_related('books').filter(pub_year__gt=2020)
CUse select_related('books').filter(pub_year__gt=2020)
DUse prefetch_related('books__filter(pub_year__gt=2020)')
Step-by-Step Solution
Solution:
  1. Step 1: Understand filtering reverse relations with prefetch_related

    To filter related objects in prefetch_related, use the Prefetch object with a filtered queryset.
  2. Step 2: Apply Prefetch with filtered queryset

    Use Prefetch('books', queryset=Book.objects.filter(pub_year__gt=2020)) inside prefetch_related() to load only books after 2020.
  3. Final Answer:

    Use Prefetch with a filtered queryset: Prefetch('books', queryset=Book.objects.filter(pub_year__gt=2020)) -> Option A
  4. Quick Check:

    Filtered prefetch needs Prefetch object [OK]
Quick Trick: Use Prefetch with filtered queryset inside prefetch_related [OK]
Common Mistakes:
MISTAKES
  • Trying to filter directly inside prefetch_related string
  • Using select_related for many-to-one reverse relations
  • Filtering the main queryset instead of related queryset

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Django Quizzes