我必须获取每个用户的总发帖数
@staff_member_required
def counter(request):
posts = Post.objects.all().count()
users = User.objects.all()
for user in users.iterator():
written_posts = Post.objects.filter(author=user).count()
context = {'users': users, 'written_posts': written_posts, 'posts': posts, 'num': num}
return render(request, 'account/counter.html', context)
但它为所有用户返回相同用户的帖子数。谁能给点建议?
答案 0 :(得分:4)
您在循环中返回,因此它只会“找到”第一个用户。
无论如何,不要手动循环,而是使用 annotate
函数:
0x123
现在可以了
from django.db.models import Count
@staff_member_required
def counter(request):
users = User.objects.all().annotate(post_count=Count('post_set'))
context = {'users': users}
return render(request, 'account/counter.html', context)
在模板中。