Задать вопрос
Dev_nab
@Dev_nab

Как получить по одному последнему объекту в каждой категории?

models.py
class Post(models.Model):
    title = ...
    text = ...
    category = models.ForeignKey('CategoryPost', ...)

class CategoryPost(models.Model)
    title = ...
    slug = ...


Как в одном queryset получить по одному последнему объекту в каждой категории?
т.е. допустим есть 5 категорий, нужно получить 5 последних постов по каждой категории.

БД MySQL, distinct() не поддерживает.

Пока получается так:
views.py
last_posts = []
for category in CategoryPost.objects.all():
    post = Post.objects.filter(category=category).last()
    last_posts.append(post)


Когда категорий 5 штук - норм., а если 150, то естественно сайт подтормаживает.
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@krasszen2
житель земли
А если попробовать MyModel.objects.all().count(), полученное число можно использовать для обращения через pk.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽