[Fixed]-Double loop in Django template

1👍

You can change the inner loop to:

{% for subcategory in category.subcategory_set.all %}

This will loop over the subcategories for the current category.

Since you are looping over categories in the outer loop, you can change the queryset in the list view to use the Category model. You can cut down the number of queries by prefetching the subcategories.

It also looks as if you can remove the get_context_data method, since the list view already makes the queryset available in the template context.

class IndexView(ListView):
    template_name = 'myForum/index.html'
    context_object_name = 'catrgories'
    queryset = Category.objects.all().prefetch_related('subcategory_set') 

Leave a comment