Skip to main content
 首页 » 编程设计

python之如何在模型级别分页数据(django)

2025年05月04日35itcoder

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 查询中。最多只能获取一页结果。