django запрос получить последние n записей
Допустим, что я реализую stream сообщений, записывает сортировку по ID по возрастанию, каждый запрос на выборку, я хочу разрешить только получение самых последних 10 записей.
Я пытался:
Messages.objects.filter(since=since)[:-10]
И у меня была ошибка: отрицательное индексирование не поддерживается.
- Путаница в администраторах Django, статических и медиафайлах
- Разница между методами Django filter () и get ()
- Структура каталога Django?
- Как я могу получить полный / абсолютный URL (с доменом) в Django?
- django - упорядочение запроса по вычисленному полю
Моя текущая работа – это сортировка по убыванию, а затем запуск:
Messages.objects.filter(since=since)[:10]
Но это требует, чтобы передняя часть снова изменила порядок.
Мой вопрос в том, есть ли элегантный способ сделать это?
- Django TemplateDoesNotExist?
- Django - Почему я вообще должен использовать render_to_response?
- задать язык в представлении django
- Django: добавление «NULLS LAST» к запросу
- Django: получить модель из строки?
- Как получить доступ к элементам массива в шаблоне Django?
- Альтернатива устаревшему setup_environ () для одноразовых скриптов django?
- Как использовать разбиение на страницы с помощью общих списков ListView на основе Django?
Вы можете передать запрос на отмену :
last_ten = Messages.objects.filter(since=since).order_by('-id')[:10] last_ten_in_ascending_order = reversed(last_ten)
Или используйте [::-1]
вместо reversed
:
last_ten = Messages.objects.filter(since=since).order_by('-id')[:10][::-1]
Если вы хотите, чтобы последние X-записи отсортировались в порядке убывания по id , Тогда я не думаю, что вам нужно, так как фильтр
last_ten = Messages.objects.all().order_by('-id')[:10]
Использование -id будет сортироваться в порядке убывания. Надеюсь, это было полезно!