我有点卡住了。
情况如下。我有2个for循环。一个循环通过类别,另一个循环通过匹配集。这是问题所在:
我需要获得该类别的所有比赛......
这就是我所拥有的:
{% for category in tournament.get_categories %}
<div class="line" style="margin-top: 25px; margin-bottom: 40px;"></div>
<div class="container">
<h3 class="margin-reset" id="{{ category.slug }}">{% trans "Matches schedule" %}<span> | {{ category.name }}</span></h3>
<table class="standard-table table">
<thead>
<tr>
<th>Match</th>
<th>Heure</th>
<th>Plateau</th>
<th>Équipe bleu</th>
<th>Équipe gris</th>
<th>Équipe noir</th>
<th>Résultat</th>
</tr>
</thead>
<tbody>
{% for match in tournament.match_set.filter(category=category) %}
<tr>
<td>{{ match.match_num }}</td>
<td>{{ match.time }}</td>
<td>{{ match.plateau }}</td>
<td><a href="{{ match.blue_team.get_absolute_url }}">{{ match.blue_team.name }}</a></td>
<td><a href="{{ match.grey_team.get_absolute_url }}">{{ match.grey_team.name }}</a></td>
<td><a href="{{ match.black_team.get_absolute_url }}">{{ match.black_team.name }}</a></td>
<td><a href="{{ match.get_absolute_url }}">{{ match.get_url_string }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endfor %}
你们可能已经猜到了,我收到了这个错误: 无法解析余数:来自'tournament.match_set.filter(category = category)'的'(category = category)'
我该怎么办?
谢谢, ARA
编辑:
以下是解决方案: 自定义标记:
@register.filter
def get_matches_by_category(value, category):
return value.match_set.filter(category=category)
使用:
{{ tournament|get_matches_by_category:category }}
答案 0 :(得分:1)
我创建了一个自定义模板标签并使用了该过滤器。
这有点矫枉过正,但是......好吧。
答案 1 :(得分:1)
我在一个非常类似的情况下所做的是将类别列表传递给模板,为它们添加一个带有匹配项的新属性,如:
for category in categories:
category.matches = Match.objects.filter(tournament=tournament, category=category)
它有点慢,但你可以使用它并减少查询次数
我会在此
之后将类别列表传递给模板