【问题标题】:Pagination a list of items inside a DetailView (many to many) Django对 DetailView(多对多)Django 中的项目列表进行分页
【发布时间】:2022-01-20 15:09:33
【问题描述】:

我有一个具有多对多关系的模型,我想通过分页从 detailView 打印该关系中的所有项目(比如页面的 10 个项目)有一种方法可以像在 ListView 中那样自动分页吗?

class CardDetailView(DetailView):

    model = Card

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['banner'] = context['card'].banners.last()
        context['banner_slideshow'] = context['card'].banners.all().order_by('-created_on') #i need that list paginated
    
        return context

    def get_queryset(self):
        return Card.objects.all()

【问题讨论】:

    标签: django many-to-many detailview


    【解决方案1】:

    您可以使用查询参数,然后将页面查询放入上下文中

        page = request.GET.get('page', 1)
        paginator = Paginator(query_set_for_m2m, ITEMS_PER_PAGE)
        try:
            items = paginator.page(page)
        except Exception as e:
            items = paginator.page(1)
        context['m2m_list'] = items
    
    

    将此代码放在您的get_context_data 上,您可以按照here 的说明从self.request 获取请求

    【讨论】:

    • 不清楚这段代码应该放在哪里。
    • @Soren 详细阐述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多