Как вывести последние 3 объекта в Django?

Всем привет.

Задача: вывести на страницу 3 последние отзыва, относящиеся к данной статье.

mentionship = Mention.objects.filter(mentionn_id = step_id)[-3:0] #Не работает


С положительными проблем нет, а вот отрицательную индексацию не поддерживает Django. Как быть?
  • Вопрос задан
  • 2066 просмотров
Решения вопроса 2
@deliro
Mention.objects.filter(mentionn_id=step_id).order_by('-pk')[:3]

Где в order_by ты кладёшь поле с минусом (по убыванию), по которому нужно эти самые последние выбрать. pk - это алиас к primary key. Если ты его не менял - это ID.

Bojczuk:
If no such ordering is defined for a given QuerySet, calling reverse() on it has no real effect
Ответ написан
попробуйте так
mentionship = Mention.objects.filter(mentionn_id = step_id).order_by('-date_update')[:3]

поле date_update - это дата добавления/обновления записи. надеюсь подобное у Вас есть
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Bojczuk
mentionship = Mention.objects.filter(mentionn_id = step_id)
mentionship_last3 = mentionship[mentionship.count()-3:]


И из доков:
https://docs.djangoproject.com/en/dev/ref/models/q...
mentionship_last3 = mentionship.reverse()[:3]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы