首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取django查询的最后n个对象?

如何获取django查询的最后n个对象?
EN

Stack Overflow用户
提问于 2015-07-19 05:05:17
回答 1查看 7.2K关注 0票数 4

我正在尝试在django中显示聊天日志。使用下面的查询,我可以按正确的顺序获取整个聊天日志。

代码语言:javascript
复制
latest_chats_list = Chat.objects.order_by('timestamp')

我想要这一行的功能(顺序中的最后10个元素),但是django不允许负索引。

代码语言:javascript
复制
latest_chats_list = Chat.objects.order_by('timestamp')[-10:]

如果我尝试这一行,我得到我想要的消息,但它们的顺序是错误的。

代码语言:javascript
复制
latest_chats_list = Chat.objects.order_by('-timestamp')[:10]

这一行给出了前10次聊天,而不是最近的一次。

代码语言:javascript
复制
latest_chats_list = Chat.objects.order_by('-timestamp')[:10].reverse()
EN

回答 1

Stack Overflow用户

发布于 2015-07-19 05:07:08

代码语言:javascript
复制
last_ten = Chat.objects.all().order_by('-id')[:10]
last_ten_in_ascending_order = reversed(last_ten)

编辑(来自评论)

为什么不使用姜戈的queryset.reverse()呢?

因为它会扰乱SQL查询,就像queryset.order_by()一样。对查询集([:10])进行切片也会改变SQL查询,向其添加LIMITOFFSET。两者可以以意想不到的方式结合在一起……

另一方面,内置的Python函数reversed(iterable)只改变了查询集的迭代方式,根本不影响SQL。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31495586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档