2013-04-18 32 views
0

我正在製作一個顯示5x5 Dota 2播放器項目揹包網格的AJAX分頁模板(請參閱截圖 - 它是由蒸汽製作的)。如何使用django分頁顯示對象的範圍?

Dota 2 player backpack

的事情是,一個頁面可以有空插槽。

下面的代碼不會處理它。如果第二時隙是空的(不具有Item與值2一個slot_nb字段)中,用的值25一個slot_nbItem對象將被顯示時,它應在第二個(slot_nb索引開始於0)被顯示在第一頁上

def get_pagination_page(page=1): 
    items = Items.objects.all() 
    paginator = Paginator(items, 25) # 25 items per page 
    try: 
     page = int(page) 
    except ValueError: 
     page = 1 

    try: 
     items = paginator.page(page) 
    except (EmptyPage, InvalidPage): 
     items = paginator.page(paginator.num_pages) 

    return items 

我基本上要的是每個頁面渲染Item.objects.filter(slot_nb=range(((page_nb*25)-25)), ((page_nb*25)-1))(1 page_nb開始)

是否有可能實現這樣的事情?

回答

0

Paginator實際上執行切片操作。

# paginator.py 
... 
return Page(self.object_list[bottom:top], number, self) 

因此,所有你需要做的就是通過slot_nb

items = Items.objects.all().order_by('slot_nb') 
使 Items排序