让我说我正在实现一个消息流,记录按ID升序排序,每个获取请求,我想只允许获取最新的10条记录.
我试过了:
Messages.objects.filter(since=since)[:-10]
Run Code Online (Sandbox Code Playgroud)
我有一个错误,说不支持负索引.
我当前的解决方法是排序ID降序,然后运行:
Messages.objects.filter(since=since)[:10]
Run Code Online (Sandbox Code Playgroud)
但这需要前端再次颠倒订单.
我的问题是,有一种优雅的方式吗?
Rob*_*jic 74
您可以将您的查询集传递给反向:
last_ten = Messages.objects.filter(since=since).order_by('-id')[:10]
last_ten_in_ascending_order = reversed(last_ten)
Run Code Online (Sandbox Code Playgroud)
Omi*_*aha 37
或者使用[::-1]而不是reversed:
last_ten = Messages.objects.filter(since=since).order_by('-id')[:10][::-1]
Run Code Online (Sandbox Code Playgroud)
all*_*yed 21
如果你想要按ID降序排序的最后X条记录,那么我认为你不需要自过滤器
last_ten = Messages.objects.all().order_by('-id')[:10]
Run Code Online (Sandbox Code Playgroud)
使用-id将按降序排序.希望这有用!!
| 归档时间: |
|
| 查看次数: |
43864 次 |
| 最近记录: |