Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:user';s列表_Django - Fatal编程技术网

Django:user';s列表

Django:user';s列表,django,Django,如何从另一个模型返回用户发布的项目,例如我有一个名为Post的模型(Author作为用户Auth模型的外键)。如何返回用户列表和每个用户的帖子数?可能是列表中每个人的最新帖子 def users_list(request): users = UserProfile.objects.all() for userposts in users: posts_count = Post.objects.filter(author=users.user).count()

如何从另一个模型返回用户发布的项目,例如我有一个名为Post的模型(Author作为用户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})
示例用法:

:

可以使用annotate()子句生成每个对象的摘要。当指定annotate()子句时,QuerySet中的每个对象都将使用指定的值进行注释

不要与以下内容混淆:

我们需要的是一种计算属于此查询集的对象的摘要值的方法。这是通过在QuerySet上追加aggregate()子句来完成的

  • annotate():聚合查询集的每个项
  • 聚合():聚合查询集的所有项

在文档中查看。虽然它可以正常工作,但它可以捕获所有用户的所有帖子数量:(我认为你使用了聚合而不是注释。用更多的示例代码更新了答案。你可以发布你的模型,也许那有什么特别之处?!
UserProfile.objects.all().annotate(num_posts=Count('post'))
for user in User.objects.annotate(post_count=Count('post')):
    print user.post_count