如何从其他模型返回用户的已发布项目,例如我有一个名为Post的模型(使用Author作为User的Auth模型的外键)。如何返回每个用户列表和帖子数量?可能是列表中每个人的最新帖子。
def users_list(request):
users = UserProfile.objects.all()
for userposts in users:
posts_count = Post.objects.filter(author=users.user).count()
return render_to_response('users.html',{'users':users,'posts_count':posts_count})
答案 0 :(得分:2)
annotate and Count的使用示例:
for user in User.objects.annotate(post_count=Count('post')):
print user.post_count
Generating aggregates for each item in a QuerySet:
可以使用annotate()子句生成每个对象的摘要。当指定annotate()子句时,QuerySet中的每个对象都将使用指定的值进行注释
不与aggregate, Generating aggregates over a QuerySet混淆:
我们需要的是一种计算属于此QuerySet的对象的汇总值的方法。这是通过将一个aggregate()子句附加到QuerySet
来完成的
答案 1 :(得分:1)
UserProfile.objects.all().annotate(num_posts=Count('post'))