在Django中限制查询结果,Python
我刚开始学习在我的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的文档了解更多信息:
8
User.objects.filter(is_active=True).order_by("-date_joined")[:10]
这段代码会给你最后加入的10个用户。想了解更多细节,可以查看Django的文档。