Я пытаюсь получить список последних 100 сообщений, а также общее количество утвержденных, ожидающих и отклоненных сообщений для пользователя этого сообщения.
models.py
class BlogPost(models.Model):
POST_STATUSES = (
('A', 'Approved'),
('P', 'Pending'),
('R', 'Rejected')
)
author = models.ForeignKey(User)
title = models.CharField(max_length=50)
description = models.TextField()
status = models.ChoiceField(max_length=1, choices=POST_STATUSES)
views.py
def latest_posts(request)
latest_100_posts = BlogPost.objects.all()[:100]
Я получаю последние 100 сообщений, теперь я хочу получить каждого автора сообщения и отобразить их общее количество утвержденных, ожидающих, отклоненных сообщений
- Заголовок сообщения, Автор1, 10, 5, 1
- Заголовок Поста2, Автор2, 7, 3, 1
- Заголовок Поста 3, Автор1, 10, 5, 1
- ...
Некоторые вещи, о которых я думал, - это циклически проходить по каждому из 100 постов и возвращать счетчик, но это кажется очень неэффективным
for post in latest_100_posts:
approved_count = BlogPost.objects.filter(author=post.user,status='A').count()
pending_count = BlogPost.objects.filter(author=post.user,status='P').count()
rejected_count = BlogPost.objects.filter(author=post.user,status='R').count()
Есть ли более эффективный способ сделать это? Я знаю об использовании совокупного количества, но я не уверен, как выполнить суб-фильтрацию статуса ChoiceField