django在模型中构建一个get_page_url函数,返回带有分页编号的列表

时间:2013-03-26 06:21:22

标签: django django-pagination

我有一个场景,其中项目是从模型中的项目列表中分页的,我想创建一个函数来返回包含该项目的页面。

例如

class Item(models.Model):
   subject  = models.CharField(max_length=200)

假设表中有1000个项目,我每页总共返回10个项目。如何在模型中构建一个方法/函数,告诉我项目将落在哪个页面?

请指教?

1 个答案:

答案 0 :(得分:0)

您可以添加一个采用order_bypaginate_by

的类方法
import itertools

def grouper(n, iterable, fillvalue=None):
    args = [iter(iterable)] * n
    return itertools.izip_longest(fillvalue=fillvalue, *args)


class Item(models.Model):
    # attrs

    @classmethod
    def get_pagination_index(cls, self, order_by, paginate_by):
        if order_by:
            qs = cls.objects.all().order_by(order_by)
        else:
            qs = cls.objects.all()
        pages = grouper(paginate_by, qs)
        i = 0
        for page in pages:
            i += 1
            if self in page:
                return i

        # return item_index = list(qs).index(self) # get the exact number