首页 > 解决方案 > Django计数查询集,显示对象而不是PK

问题描述

我编写了一个查询来对计数查询从最大到最小进行排序。基本上是一个排名系统。

    users = Referrals.objects.values('friend_id').annotate(Count('friend_id')).order_by('-friend_id__count')

它以 json 格式返回值,如下所示

<QuerySet [{'friend_id': 1, 'friend_id__count': 2}, {'friend_id': 5, 'friend_id__count': 1}]>

现在friend_id似乎是主键,是的,它链接到我的数据库中的正确键..但我不知道让它输出实际名称/电子邮件或基于该PK的任何内容?

这是我希望它显示排名的模板。

                  {% for a in users %}
                  <tr>
                      <td>{{a}}</td>
                      <td>{{a}}</td>
                  </tr>

                  {% endfor %}

这是我对其价值的全面看法。

@login_required
def statspage(request):
    users = Referrals.objects.values('friend_id').annotate(Count('friend_id')).order_by('-friend_id__count')
    print(users)

    context = {
        'users': users,
    }

    return render(request, 'stats.html', context)

还有一个问题 - 是否可以根据 User 模型中存在的布尔值进行过滤?

标签: pythondjango

解决方案


假设是一个具有名为和(和)字段friend的模型的 FK ,您可以在部件中指定这些字段,如下所示:Useremailfirst_namelast_name.values(...)

Referrals.objects.values('friend_id', 'friend__email', 'friend__first_name') ...

推荐阅读