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