如何通过Objects.filter从数据库中检索最后1,000个值?我目前正在做的是给我输入数据库中的前1,000个值(即10,000行,它给我带来的是1-1000,而不是9000-1,000)。
当前代码:
limit = 1000
Shop.objects.filter(ID = someArray[ID])[:limit]
干杯
答案 0 :(得分:12)
queryset = Shop.objects.filter(id=someArray[id])
limit = 1000
count = queryset.count()
endoflist = queryset.order_by('timestamp')[count-limit:]
endoflist
是您想要的查询集。
以下内容来自关于reverse() queryset方法的django文档。
检索“最后”中的五个项目 一个查询集,你可以这样做:
my_queryset.reverse()[:5]
请注意,这并不完全相同 从序列的末尾切片 在Python中。上面的例子会 先返回最后一项,然后再返回 倒数第二项等。如果我们有 一个Python序列,看着 seq [-5:],我们会看到倒数第五 项目第一。 Django不支持 访问模式(切片来自 结束),因为这是不可能的 它在SQL中有效。
所以我不确定我的答案是否效率低,效率极低。我将order_by
移到最终查询中,但我不确定这是否有所作为。
答案 1 :(得分:0)
reversed(Shop.objects.filter(id=someArray[id]).reverse()[:limit])