@7a-666

Пагинатор для detail view?

У меня есть категории товаров ListView когда я перехожу на определенный каталог DetailView
В каталоге я подгружаю связанные с ним товары через product_set.all мне надо сделать пагинацию для товаров
Каталог и товары 2-а разных приложения но они связаны. В каталоге есть представления о списке категорий и одна категория а в приложении товары есть одно представление карточка товара то-есть DetailView
Код категорий
app_name = 'catalog'

urlpatterns = [
    path('', CategoriesList.as_view(), name='categories_list'),
    path('<str:slug>/', CategoryDetail.as_view(), name='category_detail'),
]

class CategoriesList(ListView):
    model = Category
    context_object_name = 'categories'
    template_name = 'catalog/categories_list.html'


class CategoryDetail(DetailView):
    model = Category
    template_name = 'catalog/category_detail.html'


Код продуктов
app_name = 'product'

urlpatterns = [

    # Перенаправление в каталог
    path('', RedirectView.as_view(url='/catalog/')),

    path('<str:slug>/', ProductDetail.as_view(), name='detail'),
]

class ProductDetail(DetailView):
    """Карточка товара"""
    
    model = Product
    template_name = 'products/products_detail.html'
    
    def get_context_data(self, **kwargs):
        """Добавляю представление о форме ввода комментария"""

        context = super().get_context_data(**kwargs)
        context['comment_form'] = CommentForm()
        return context

И теперь вопросы
1) Лучше переопределить DetailView каталога в ListView и сделать пагинацию?
1.1) Тогда по логике в каком приложении должно находиться это в представление ведь это и список товаров и категория

2) Сделать пагинацию в DetailView, тогда подскажите как это сделать желательно подробно. Я смотрел ответы и код но я не могу в нем разобраться как это работает вот ссылки
- https://stackoverflow.com/questions/25569551/pagin...
- https://gist.github.com/nspo/5ab1ecde7e918a5fa2662...
- https://www.reddit.com/r/django/comments/6tdavj/he...
  • Вопрос задан
  • 477 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
1) Да
1.1) Зависит в первую очередь от того откуда куда у вас модели импортируются - это наиболее частая причина циклических импортов.
2) Можно заюзать пагинатор напрямую, примерно так же как сделано в ListView, только натравить его на category.product_set.all(). Естественно всё вручную.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы