• Как при выборе категории выводить как элементы этой категории, так и и элементы всех её подкатегорий?

    @WITT Автор вопроса
    Ответ из StackOverflow если у кого то будет похожая ситуация

    Вы можете сделать это на дополнительном шаге. Вам нужно получить дочерние категории, а затем отфильтровать по ним товары. Пример кода:
    category = Category.objects.get(category_slug=category_slug)
    sub_categories=category.get_descendants(include_self=True)
    Product.objects.filter(category__in=sub_categories)


    А вот полный код для вашего случая.
    def product_list(request, category_slug=None):
        category = None
        categories = Category.objects.all()
        products = Product.objects.filter(available=True).order_by('-created')
        if category_slug:
            category = get_object_or_404(Category, slug=category_slug)
            sub_categories = category.get_descendants(include_self=True)
            products = products.filter(category__in=sub_categories)
        return render(request,
                      'shop/shop.html',
                      {'category': category,
                      'categories': categories,
                       'products': products})
    Ответ написан
    Комментировать