我正在尝试在django中显示聊天记录.我可以使用此查询以正确的顺序获取整个聊天记录.
latest_chats_list = Chat.objects.order_by('timestamp')
Run Code Online (Sandbox Code Playgroud)
我想要这行的功能(按顺序排列最后10个元素),但django不允许负索引.
latest_chats_list = Chat.objects.order_by('timestamp')[-10:]
Run Code Online (Sandbox Code Playgroud)
如果我尝试这一行,我会收到我想要的消息,但它们的顺序错误.
latest_chats_list = Chat.objects.order_by('-timestamp')[:10]
Run Code Online (Sandbox Code Playgroud)
这一行给出了前10个聊天而不是最近的聊天.
latest_chats_list = Chat.objects.order_by('-timestamp')[:10].reverse()
Run Code Online (Sandbox Code Playgroud)
last_ten = Chat.objects.all().order_by('-id')[:10]
last_ten_in_ascending_order = reversed(last_ten)
Run Code Online (Sandbox Code Playgroud)
为什么不使用Django queryset.reverse()?
因为它与SQL查询混淆,因为它queryset.order_by().切片queryset([:10])也会改变SQL查询,添加LIMIT和查询OFFSET.这两者可以以不明显的预期方式结合......
另一方面,内置的Python函数reversed(iterable)只会改变查询集迭代的方式,而不会影响SQL.
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |