Используя Django, у меня есть следующая модель:
class Score(models.Model):
team = models.ForeignKey(Team, on_delete=models.CASCADE)
month = models.CharField(max_length=255)
points = models.FloatField(null=True, blank=True)
У меня есть следующие данные в этой таблице:
Team Date Points
A Jan 2015 100
A Feb 2015 150
A Mar 2015 200
B Jan 2015 120
B Feb 2015 200
B Mar 2015 300
C Jan 2015 111
C Feb 2015 122
C Mar 2015 133
Итак, я считаю, что могу запустить:
data = Score.objects.all()
Это вернет список со всеми вышеупомянутыми записями. Все идет нормально. Тем не менее, я хочу показать это в виде графика в JavaScript. Это требует очень определенного формата. Во-первых, мне нужно разделить все метки оси X («январь 2015», «февраль 2015», «март 2015»), а затем мне нужно сгруппировать все результаты по командам. Вот как должен выглядеть финальный js:
<script>
var timeXAxis = ["Jan 2015", "Feb 2015", "Mar 2015"]
var timeSeries = [
{
name: "Team 1",
data: [
["Jan 2015", 100],
["Feb 2015", 150],
["Mar 2015", 200],
]
},
{
name: "Team 2",
data: [
["Jan 2015", 120],
["Feb 2015", 200],
["Mar 2015", 300],
]
},
{
name: "Team 3",
data: [
["Jan 2015", 111],
["Feb 2015", 222],
["Mar 2015", 333],
]
}
];
</script>
Вот где это становится сложно. Я новичок в Python и не уверен, как правильно это сделать. Я предполагаю, что должен подготовить переменные в моем представлении, и не делать большую часть этого в моем шаблоне Но как мне это сделать? Создать ли два списка (один для меток оси X, а затем другой для данных)? Я использую многомерные списки? Или словари?