У меня уже есть рабочий вид и шаблон для отображения статистики моего игрока.Я получаю итоговую сумму выигрыша игрока, затем создаю новую переменную под названием points, затем (Wins * 3) и добавляю это значение в массив.Я передаю этот массив в шаблон и отображаю.
Сейчас я преобразовываю в представление на основе классов, и я не знаю, как рассчитать точки.
Ниже работает отлично:
def players(request):
# descending order player list by points
players = Player.objects.all().order_by('-points')
won = Match.objects.filter(won=True)
lost = Match.objects.filter(won=False)
tie = Match.objects.filter(won=None)
player_stats = []
for player in players:
print(player.name)
# print(player.preferredfoot)
won_matches = len(won.filter(player__name=player.name))
lost_matches = len(lost.filter(player__name=player.name))
tie_matches = len(tie.filter(player__name=player.name))
points = won_matches * 3 + tie_matches
player_stats.append([player.name, player.preferredfoot, won_matches, tie_matches, lost_matches, points, player.position, player.trait, player.goalsscored, player.assists, player.motmawards])
content = {
'player_stats': player_stats
}
return render(request, 'manager/players.html', content)
Теперь сПредставление на основе классов: -
class PlayerListView(ListView):
model = Player
template_name = 'manager/players.html'
context_object_name = 'player_stats' (used by my template)
Я не понимаю, как я могу добавить дополнительные данные в вышеприведенное, у меня просто есть поля, которые относятся только к объекту Player.Мне нужно добавить дополнительные значения в объект Player перед передачей контекста в шаблон.
Как добавить эквивалент
for player in players:
won_matches = len(won.filter(player__name=player.name))
won = Match.objects.filter(won=True)
...
points = won_matches * 3
в мой context_object_name 'player_stats'?
Спасибо