Edu*_*rdo 1 python django optimization pagination
官方Django文档给我们这样的东西:
from django.core.paginator import Paginator
my_list = MyModel.objects.all()
p = Paginator(my_list, 10)
Run Code Online (Sandbox Code Playgroud)
但.如果我必须对100万行进行分页怎么办?每次我想查看单个分页页面时,使用MyModel.objects.all()加载100万行效率不高.
有没有更有效的方法来执行此操作而无需调用objects.all()来进行简单的分页?
MyModel.objects.all()实际上并没有加载所有对象.它可能会加载所有这些,但在您实际执行需要对其进行评估的操作之前,它将不会执行任何操作.
Paginator几乎肯定会对该查询集添加一些限制.例如,使用数组切片表示法,它可以创建一个新对象,就像这样
my_list = MyModel.objects.all()
smaller_list = my_list[100:200]
Run Code Online (Sandbox Code Playgroud)
这将创建一个不同的查询集,它只会从数据库中请求100个项目.或者调用.count()原始查询集,它只是指示数据库返回表中的行数.
你必须做一些需要检索所有对象的东西,比如调用
list(my_list)
Run Code Online (Sandbox Code Playgroud)
获取1000000行从数据库传输到Python.
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |