Performance: ManyToManyField for many-to-many
MEDIUM IMPACT
This affects database query performance and page load speed when rendering related data in templates.
books = Book.objects.prefetch_related('authors').all() # In template same as above
class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField('Author') # In view books = Book.objects.all() # In template {% for book in books %} {{ book.title }} {% for author in book.authors.all() %} {{ author.name }} {% endfor %} {% endfor %}
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Without prefetch_related | N+1 queries cause delayed data rendering | Multiple reflows possible if data loads incrementally | Higher paint cost due to slower data availability | [X] Bad |
| With prefetch_related | 2 queries total, data ready before render | Single reflow after full data load | Lower paint cost, faster LCP | [OK] Good |