Django Pagination object使用QuerySet查询数据库。
我可以生成一些信息,但不是直接来自数据库。相反,它是派生的。
是否有一个对象可以帮助我对它进行分页,或者我应该重新实现自己的分页?
在这个sort-of related question中,他们只是制作了自己的分页器。
Django Pagination object使用QuerySet查询数据库。
我可以生成一些信息,但不是直接来自数据库。相反,它是派生的。
是否有一个对象可以帮助我对它进行分页,或者我应该重新实现自己的分页?
在这个sort-of related question中,他们只是制作了自己的分页器。
2条答案
按热度按时间zi8p0yeb1#
糟糕,Paginator处理非QuerySet对象。the docs:
注意,你可以给予Paginator一个list/tuple,一个Django QuerySet,或者任何其他带有
count
()或__len__
()方法的对象。当确定传递的对象中包含的对象数量时,Paginator将首先尝试调用count(),然后如果传递的对象没有count()方法,则回退到使用len()。这允许像Django的QuerySet这样的对象在可用时使用更有效的count()方法。1l5u6lss2#
是否有一个对象可以帮助我对它进行分页,或者我应该重新实现自己的分页?
对象不一定是
QuerySet
,它应该是一个接受使用.count()
或len(…)
获取元素数量并对其进行切片的对象,因此…[
lo:
hi]
。例如,列表也可以通过这种方式进行分页。当然,使用列表通常会破坏分页的目的:你通常希望阻止将所有元素加载到内存中,因为这会耗尽内存,或者这样做会在计算上消耗大量资源。
但是你可以相应地创建一个实现
__len__
和__getitem__
方法的类,所以:然后,
Paginatable
可以例如处理文件、执行机器学习任务等。以确定项目的子集。