Как правильно показывать "похожие товары" с помощью карусели в шаблоне Django?

Я хочу отображать похожие товары с помощью карусели. Но я могу отобразить только 4 товара на "элемент карусели". Если в цикле {% for item in related_products %} больше 4, то отображение не корректно.

Я сделал "контекстные" срезы из 4 элементов, и это даже работает, но я уверен, что есть лучший способ.

Как я могу решить эту проблему и перенести следующие товары в следующий "элемент карусели"?

Кроме того, подскажите, пожалуйста, как не отображать "элемент карусели", если для него нет товаров? Конструкция {% if related_products_1 is not null %} не работает.

мои взгляды:

class ProductDetail(FormView):

    template_name = 'retail/single_product.html'
    context_object_name = 'product'
    form_class = CartAddProductRetailForm

    def get_queryset(self):
        return Product.objects.filter(category__slug=self.kwargs['slug'])

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        context['product'] = Product.objects.get(slug=self.kwargs['slug'])
                                                                           # slices:
        context['related_products_1'] = Product.objects.select_related('tag').all()[:4]
        context['related_products_2'] = Product.objects.select_related('tag').all()[4:8]
        context['related_products_3'] = Product.objects.select_related('tag').all()[9:12]
        return context

Шаблон:

Вернуться на верх