django query get last n records

后端 未结 3 1588
慢半拍i
慢半拍i 2020-12-08 01:37

Lets say I am implementing a message stream, records sort by ID ascending order, each fetch request, I want to only allow to fetch the most latest 10 records.

I trie

相关标签:
3条回答
  • 2020-12-08 02:12

    If you want last X records sorted in descending order by id , Then I don't think you need since filter

    last_ten = Messages.objects.all().order_by('-id')[:10]
    

    Using -id will sort in descending order. Hope this was helpful !!

    0 讨论(0)
  • 2020-12-08 02:16

    Or use [::-1] instead of reversed:

    last_ten = Messages.objects.filter(since=since).order_by('-id')[:10][::-1]
    
    0 讨论(0)
  • 2020-12-08 02:31

    You can pass your queryset to reversed:

    last_ten = Messages.objects.filter(since=since).order_by('-id')[:10]
    last_ten_in_ascending_order = reversed(last_ten)
    
    0 讨论(0)
提交回复
热议问题