Django:列出一个字段组合其所有唯一值的所有内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:列出一个字段组合其所有唯一值的所有内容相关的知识,希望对你有一定的参考价值。
我被困。我遇到的问题是我想创建一个objects.all()
列表,但是所有对象(其中一个ForeignKey
相同)应该组合到列表中的一个条目。
我的型号:
class TournamentStandings(models.Model):
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
player_place = models.FloatField(verbose_name=u"Place")
我想得到的清单是这样的:
ID |播放器|比赛|放置1 | Name_1 | Tournament_1,Tournament_2 | Place_on_tournament_1,P_o_t_2 2 | Name_2 | Tournament_1,Tournament_2 | Place_on_tournament_1,P_o_t_2
所以ForeignKey(Player)
将是我想限制和组合条目的人。我尝试了objects.all()的通用视图和模板中的循环:
{% for player in ranking_list %}
<tr>
<td>{{ ranking_list.id }}</td>
<td>{{ ranking_list.player }}</td>
<td>{{ ranking_list.tournament }}</td>
<td> {{ ranking_list.player_place }} </td>
</tr>
{% endfor %}
它没用。任何提示?
将order_by
添加到您的查询中,以便同一玩家的排名是连续的,并将结果传递给itertools.groupby
以获得“子列表”(同一玩家的所有排名组合在一起)。然后,您可以以任何您喜欢的方式处理/格式化这些。
我使用了一点点不同的方法。我在views.py中使用了annotate:
ranking_list = TournamentStandings.objects.values('player__name').annotate(Sum('player_points'))
return render(request, 'rankings.html', {'ranking_list': ranking_list})
然后在我的模板中,我展示了player__name
和player_points_sum
的专栏。排序由webstack_django_sorting
在模板中完成,因此用户可以通过列确定他们想要的结果显示顺序。
template.html:
{% load sorting_tags %}
<table class="table table-bordered">
<thead>
<tr>
<th>{% anchor player__name _("Gracz") %}</th>
<th>{% anchor player_points__sum _("Punkty") %}</th>
</tr>
</thead>
{% load static %}
<tbody>
{% autosort ranking_list %}
{% for ranking_list in ranking_list %}
<tr>
<td>{{ ranking_list.player__name }}</td>
<td> {{ ranking_list.player_points__sum }} </td>
</tr>
{% endfor %}
</tbody>
</table>
以上是关于Django:列出一个字段组合其所有唯一值的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access如何计算一个值及其在字段中列出的所有排列的次数?