0

我正在制作一个显示 5x5 Dota 2玩家物品背包网格的 AJAX 分页模板(见截图——它是由 steam 制作的)。

Dota 2 玩家背包

问题是,一个页面可以有空槽。

下面的代码不会处理它。如果第二个 slot 为空(没有Itemvalueslot_nb字段2),当它应该显示在第二个页面时,具有 value 的对象将显示在第一页上(slot_nb 索引从Item开始)slot_nb250

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))page_nb从 1 开始)

有可能实现这样的目标吗?

4

1 回答 1

0

Paginator 实际执行切片操作。

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

所以你所要做的就是通过Items订购slot_nb

items = Items.objects.all().order_by('slot_nb')
于 2013-04-18T18:40:29.330 回答