限制结果从django,python中的query返回

时间:2009-09-23 12:42:20

标签: python django

我刚刚开始学习如何在我的Django应用程序中进行查询,并且我有一个查询可以获取按加入日期过滤的新用户列表:

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

据我所知,它为我提供了所有用户,按日期加入排序。我如何最好地限制它以获得最后N个用户?

在此,是否有人推荐和阅读材料以了解有关这些类型的查询的更多信息?

4 个答案:

答案 0 :(得分:8)

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

将为您提供最后加入的10位用户。有关详细信息,请参阅the Django docs

答案 1 :(得分:4)

对构造的查询使用列表切片操作,例如

例如,这将返回前5个对象(LIMIT 5):

Entry.objects.all()[:5]

这将返回第六个到第十个对象(OFFSET 5 LIMIT 5):

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

阅读django文档 http://docs.djangoproject.com/en/dev/topics/db/queries/

答案 2 :(得分:2)

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

QuerySet是懒惰的[http://docs.djangoproject.com/en/dev/ref/models/querysets/]。当您对列表进行切片时,它实际上并不会获取所有条目,将它们加载到列表中,然后对它们进行切片。相反,它只获取最后10个条目。

答案 3 :(得分:0)

顺便说一下,如果您只是划分所有用户的金额(例如,每个网站10个),您应该对dJango中的分页感兴趣,非常有帮助http://docs.djangoproject.com/en/dev/topics/pagination/#topics-pagination