【问题标题】:How to paging data in model level (django)如何在模型级别分页数据(django)
【发布时间】:2014-05-09 12:10:03
【问题描述】:

django 中有一个Paginatorfrom django.core.paginator import Paginator。 但是这个 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 

每次用户查看页面时,我都应该获取所有消息以生成该页面。你知道,messages table 包含大量数据时非常糟糕。

那么,如何在模型级别分页消息数据?或者我应该创建一个分页存储过程来做到这一点?但是django好像不支持存储过程...

【问题讨论】:

    标签: python django orm pagination paging


    【解决方案1】:

    你的分析是错误的。您没有将完整的消息集传递给分页器。

    查询集是惰性的,并且不会被评估为迭代:在分页器的情况下,它将对对象进行切片 - 这导致 LIMIT/OFFSET 在发送到数据库之前被添加到 SQL 查询中。最多只能获取一页结果。

    【讨论】:

    猜你喜欢
    • 2019-09-03
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多