我刚刚开始学习如何在我的Django应用程序中进行查询,并且我有一个查询可以获取按加入日期过滤的新用户列表:
newUsers = User.objects.filter(is_active=True).order_by("-date_joined")
据我所知,它为我提供了所有用户,按日期加入排序。我如何最好地限制它以获得最后N个用户?
在此,是否有人推荐和阅读材料以了解有关这些类型的查询的更多信息?
答案 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)