Python django核心分页是否首先检索所有数据?

Python django核心分页是否首先检索所有数据?,python,django,pagination,django-1.5,Python,Django,Pagination,Django 1.5,我正在使用django 1.5。我需要将页面拆分为数据。我读文件。我不确定它是否首先检索所有数据。因为我有一张很大的桌子,所以最好使用类似“limit”的东西。谢谢 编辑 我正在ModelManager中使用queryset 例如: class KeywordManager(models.Manager): def currentkeyword(self, kw, bd, ed): wholeres = super(KeywordManager, self).get_q

我正在使用django 1.5。我需要将页面拆分为数据。我读文件。我不确定它是否首先检索所有数据。因为我有一张很大的桌子,所以最好使用类似“limit”的东西。谢谢

编辑

我正在ModelManager中使用queryset

例如:

class KeywordManager(models.Manager):
    def currentkeyword(self, kw, bd, ed):
         wholeres = super(KeywordManager, self).get_query_set() \
                .values("sc", "begindate", "enddate") \
                .filter(keyword=kw, begindate__gte=bd, enddate__lte=ed) \
                .order_by('enddate')

        return wholeres

首先,
queryset
是一个惰性对象,django将在您请求数据时立即检索数据,但如果您不这样做,django将不会命中数据库。如果在查询集上使用任何列表方法,如
len()
,则将计算所有查询集并强制django检索所有数据


如果将
queryset
传递给分页器,它将不会检索所有数据,因为正如docs所说,如果传递queryset,它将使用.count()方法避免将
queryset
转换为列表和使用
len()
方法

如果数据不是来自数据库,则是-Paginator必须首先加载所有信息,以确定如何“拆分”它

如果没有,并且只是使用Django自动生成的SQL与数据库交互,则分页器将执行查询以确定数据库中的项目数(即SQL
COUNT()
),并使用您提供的值确定要生成的页面数。示例:
count()
返回43,您需要10个结果的页面-生成的页面数等于:
43%10+1=5

我添加了编辑。如果我使用p=Paginator(KeywordMdl.keywordmgr.currentkeyword(…),10),Paginator将在每次更改页面时从数据库中检索10行,对吗@利维