django запрос получить последние n записей

Допустим, что я реализую stream сообщений, записывает сортировку по ID по возрастанию, каждый запрос на выборку, я хочу разрешить только получение самых последних 10 записей.

Я пытался:

Messages.objects.filter(since=since)[:-10] 

И у меня была ошибка: отрицательное индексирование не поддерживается.

Моя текущая работа – это сортировка по убыванию, а затем запуск:

 Messages.objects.filter(since=since)[:10] 

Но это требует, чтобы передняя часть снова изменила порядок.

Мой вопрос в том, есть ли элегантный способ сделать это?

Вы можете передать запрос на отмену :

 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 будет сортироваться в порядке убывания. Надеюсь, это было полезно!

  • Django: получить модель из строки?
  • Django - Почему я вообще должен использовать render_to_response?
  • Django: Как перенаправить сообщение и передать данные сообщения
  • Как использовать разбиение на страницы с помощью общих списков ListView на основе Django?
  • Путаница в администраторах Django, статических и медиафайлах
  • Как я могу получить полный / абсолютный URL (с доменом) в Django?
  • Django / Comet (Push): Меньше всего зол?
  • Django - Соединение отказано
  • Сообщение об ошибке Django "Добавить аргумент related_name в определение"
  • Альтернатива устаревшему setup_environ () для одноразовых скриптов django?
  • Django: переадресовать пользователей с учетной записи
  • Interesting Posts

    Централизованная настройка PulseAudio

    Получение местоположения элемента управления, относящегося ко всему экрану?

    java lambda возвращает лямбду

    java.lang.IllegalArgumentException: содержит разделитель путей

    В чем разница между интерфейсами mini PCIe и mSATA и SSD?

    Вращающийся монитор от пейзажа к портрету в Win7? Монитор HP w2207h

    Что-то не так с использованием T & F вместо TRUE & FALSE?

    как создать круговой просмотрщик?

    Windows 10 Explorer отключает имя папки после символа последнего периода

    Функция SQL group_concat в SQL Server

    Ошибка при получении: Ошибка аутентификации сверстников для пользователя «postgres» при попытке заставить pgsql работать с рельсами

    Как эмулировать инициализацию массива C “int arr = {e1, e2, e3, …}” поведение с std :: array?

    Выберите копию и вставьте в терминал mac или ubuntu без использования мыши

    Как записывать и воспроизводить звук в приложении iPhone?

    Почему я не мог сериализовать кортеж в C #?

    Давайте будем гением компьютера.