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, то естественно сайт подтормаживает.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
@krasszen2
житель земли
А если попробовать MyModel.objects.all().count(), полученное число можно использовать для обращения через pk.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы