2011-07-20 44 views
1

我正在使用django 1.3,並且我有一個需要分頁查詢集(設置爲使用50個對象)的視圖。下面是該視圖中的get_context_data()方法的相關部分:使用django中的paginator更改每頁上的項目數或查看所有視圖

#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) 

它呈現模板剛從查詢集建立了一個表,並具有鏈接轉到下一個和前幾頁。

我想要做的是要麼有一個鏈接來查看所有,這將只顯示查詢集unpaginated,或修改每頁的對象數量(這將重新創建分頁)的選項。我沒有與視圖或設計太多,所以我不知道如何做到這一點。這是我可以用JS做什麼,如果是的話,怎麼樣?否則,我可以只用django和html來完成嗎?這可能很簡單,我只是很缺乏經驗,並沒有在任何地方找到答案或例子。

謝謝!

回答

3

你想要做的就是添加一個可選的參數,稱爲「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) 

然後你就可以在任意PAGE_SIZE傳遞和-1的看法所有頁面(我會用相應的url來做,加上/ viewall /的URL,無論如何-1都會傳入)

相關問題