在Django中限制查询结果,Python

3 投票
4 回答
2709 浏览
提问于 2025-04-15 14:32

我刚开始学习在我的Django应用中如何进行查询,我有一个查询可以让我得到按加入日期筛选的新用户列表:

newUsers = User.objects.filter(is_active=True).order_by("-date_joined")

根据我的理解,这个查询会给我所有用户,并按加入日期排序。那我该怎么做才能限制结果,只获取最近的N个用户呢?

另外,有人推荐一些阅读材料,让我能更深入了解这些类型的查询吗?

4 个回答

2
User.objects.filter(is_active=True).order_by("-date_joined")[:10]

QuerySets 是懒惰的 [ http://docs.djangoproject.com/en/dev/ref/models/querysets/ ]。当你在切片这个列表的时候,它并不会一次性把所有的条目都取出来,放到一个列表里再进行切片。相反,它只会取出最后的 10 个条目。

4

在构建的查询上使用列表切片操作,例如:

比如,这个操作会返回前5个对象(限制为5个):

Entry.objects.all()[:5]

这个操作会返回第六到第十个对象(跳过前5个,限制为5个):

Entry.objects.all()[5:10]

可以查看Django的文档了解更多信息:

http://docs.djangoproject.com/en/dev/topics/db/queries/

8
User.objects.filter(is_active=True).order_by("-date_joined")[:10]

这段代码会给你最后加入的10个用户。想了解更多细节,可以查看Django的文档

撰写回答