django 中有一个Paginator。 从 django.core.paginator 导入分页器。 但是这个分页器需要获取所有数据来提供它。 简单的例子:
def getMsgByPage():
page =2
messages = Message.objects.filter(participation__scene=scene, status='W')
paginator = Paginator(messages , 50)
page_obj = paginator.page(page)
return page_obj
每次用户查看页面时,我都应该获取所有消息以生成该页面。你知道,当消息表包含大量数据时,这是非常非常糟糕的。
那么,如何在模型级别分页消息数据?或者我应该创建一个分页存储过程来执行此操作?但是django好像不支持存储过程...
请您参考如下方法:
你的分析是错误的。您没有将完整的消息集传递给分页器。
查询集是惰性的,并且不会被评估为它们被迭代:在分页器的情况下,它将对对象进行切片 - 这导致 LIMIT/OFFSET 在发送到数据库之前被添加到 SQL 查询中。最多只能获取一页结果。
