Home > Django > djangofantalega: Classifica

djangofantalega: Classifica

15 Novembre 2016

12 – Classifica

Per visualizzare la classifica delle squadre della lega,
Colleghiamo il pulsante già presente nella template league.html
alla view league_details:

...
@login_required
def league_details(request, league_id):
    ...
    if request.GET.get('chart'):
        return redirect('chart', league.id)
    context = {'league': league, 'teams': league_teams,
               'days': days, 'user': request.user}
    return render(request, 'fantalega/league.html', context)
...

inserire la url:

...
    # chart url
    url(r'^leagues/(?P<league_id>[0-9]+)/chart$',
        views.chart, name='chart'),
]

Aggiungere nel file fantalega\views.py la nuove vista:

...

@login_required
def chart(request, league_id):
    league = get_object_or_404(League, pk=int(league_id))
    league_teams = league.team_set.all()
    if request.GET.get('back_to_teams'):
        return redirect('league_details', league.id)
    lineups_values = []
    for team in league_teams:
        lineups = [lineup for lineup in
                   Lineup.objects.filter(league=league, team=team).all()
                   if lineup.pts]
        won = sum([lineup.won for lineup in lineups])
        matched = sum([lineup.matched for lineup in lineups])
        lost = sum([lineup.lost for lineup in lineups])
        gm = sum([lineup.goals_made for lineup in lineups])
        gc = sum([lineup.goals_conceded for lineup in lineups])
        tot_pts = sum([lineup.pts for lineup in lineups])
        tot = won * 3 + matched
        lineups_values.append((team, tot, won, matched, lost, gm, gc, tot_pts))
    lineups_values.sort(key=lambda x: (x[1], x[6]), reverse=True)
    context = {'league': league, 'lineups_values': lineups_values}
    return render(request, 'fantalega/chart.html', context)

la template
fantalega/templates/fantalega/chart.html

{% extends 'fantalega/base.html' %}
{% load bootstrap3 %}

{% block content %}
	<h1><font color="green">{{ league.name }}</font></h1>
    <form action="#" method="get">
    <input type="submit" class="btn"
           value="back to {{ league.name }} teams" name="back_to_teams">
    </form>

    <table class="table table-striped" width="100%">
      <tr>
          <th>team</th>
          <th>pts</th>
          <th>won</th>
          <th>matched</th>
          <th>lost</th>
          <th>goals made</th>
          <th>goals conceded</th>
          <th>total pts</th>
      </tr>
      {% for values in lineups_values %}
        <tr>
              <td>{{ values.0.name }}</td>
              <td>{{ values.1 }}</td>
              <td>{{ values.2 }}</td>
              <td>{{ values.3 }}</td>
              <td>{{ values.4 }}</td>
              <td>{{ values.5 }}</td>
              <td>{{ values.6 }}</td>
              <td>{{ values.7 }}</td>
      </tr>
      {% endfor %}
    </table>

{% endblock %}

Per visualizzare la classifica basterà premere il pulsante ‘view chart’

Salvare su github:

git add --all
git commit -m "Chart added"
git push -u origin master

articoli precedenti
0 – indice
1 – Virtualenv e Git
2 – Models: Season
3 – Admin: Login e Logout
4 – Models: League
5 – Models: Team
6 – Models: Match
7 – Models: Player
8 – Asta
9 – Models: Lineup
10 – Models: Trade
11 – Asta di riparazione

Categorie:Django Tag:
I commenti sono chiusi.