Джанго / Питон нуб здесь!
Вот мои модели:
class Match(models.Model):
date = models.DateTimeField()
court = models.ForeignKey(Court)
players = models.ManyToManyField(User, through='Participant')
class Participant(models.Model):
match = models.ForeignKey(Match)
userid = models.ForeignKey(User)
games_won = models.IntegerField()
class Court(models.Model):
location_name = models.CharField(max_length=100)
number = models.IntegerField()
Мой взгляд в настоящее время:
def index(request):
matches_list = Participant.objects.all()
return render_to_response('squash/base_matches.html', {'matches_list': matches_list}, context_instance = RequestContext(request))
return HttpResponse(output)
Мои данные в базе данных выглядят следующим образом:
[match_id] [date] [userid] [games_won] [court_location_name] [court_number]
1 01-01-2011 mike 6 Queen 5
1 01-01-2011 chris 4 Queen 5
2 01-02-2011 bob 3 Queen 6
2 01-02-2011 joe 4 Queen 6
3 01-03-2011 jessie 5 Queen 2
3 01-03-2011 john 5 Queen 2
То, что я хочу сделать, это:
[match_id] [date] [player1] [player2] [p1wins] [p2wins] [game_winner] [court_location_name] [court_number]
1 01-01-2011 mike chris 6 4 mike Queen 5
2 01-02-2011 bob joe 3 4 joe Queen 6
3 01-03-2011 jessie john 5 5 draw Queen 2
Что означает, что мне нужно сгруппировать по match_id. Я попытался сделать что-то вроде следующего в моем шаблоне, но он собирает только match_id, дату и время. Мне нужно иметь возможность отформатировать остальные данные. В структуре таблицы, как предложено прямо перед.
{% regroup matches_list by match as matches_group %}
<ul>
{% for event in matches_group %}
<li>{{ event.grouper }}
<ul>
{% for item in blah.list %}
<li>{{ item.date }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Любой совет здесь?
ОБНОВЛЕНИЕ: я проверил с matches_list = Participant.objects.values('match').annotate(total=Count('match'))
, и я верю, что это то, что меня объединяет. Однако я не знаю, как извлечь из него правильные поля в шаблоне. Например:
{% for matches in matches_list %}
<p>{{ matches.match.id }}</p>
{% endfor %}
Это дает мне 3 записи (я вижу 3
), но ничего не распечатывается. Не уверен, что мне нужно сделать для {{ matches.match.id }}