在 Django 中使用分页器更改每页的项目数量或查看所有项目数量

2024-05-20 09:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是django1.3,我有一个视图,它接受分页查询集(设置为使用50个对象)。以下是视图中get_context_data()方法的相关部分:

    #build paginator for querysets
    paginated_scanned_assets = Paginator(scanned_assets_qs, 50)

    #get the specified page
    try:
        page_num = int(self.request.GET.get('page', '1'))
    except ValueError:
        page_num = 1

    #get a paginated list of object
    try:
        scanned_assets = paginated_scanned_assets.page(page_num)
    except (EmptyPage, InvalidPage):
        scanned_assets = paginated_scanned_assets.page(paginated_scanned_assets.num_pages)

它所呈现的模板只是从queryset构建一个表,并有指向下一页和上一页的链接。在

我想做的是要么有一个链接来查看全部,这将只显示未分页的查询集,要么有一个选项来修改每页的对象数(这将重新创建分页器)。我不太了解视图或设计,所以我不知道如何做到这一点。我能用js做点什么吗?如果可以,怎么做?否则我可以用django和html来做吗?这可能很简单,我只是很缺乏经验,在任何地方都没有找到答案或例子。在

谢谢!在


Tags: 对象方法build视图dataget链接context
1条回答
网友
1楼 · 发布于 2024-05-20 09:10:23

您要做的是向视图添加一个名为“page_size”的可选参数,然后执行以下操作:

def your_view(request, ..., page_size=50):
  scanned_assets_qs = # get your scanned_assets QuerySet

  if page_size == -1:
    page_size = scanned_assets_qs.count()

  paginator = Paginator(scanned_assets_qs, page_size)

然后您可以传入任意的页面大小,并为view all页面传入-1(我会使用适当的url,再加上一个用于/viewall/的url,不管是什么都传入-1)

相关问题 更多 >