Преобразование списка Python в определенный формат JavaScript - PullRequest
0 голосов
/ 29 октября 2018

Используя 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, а затем другой для данных)? Я использую многомерные списки? Или словари?

1 Ответ

0 голосов
/ 29 октября 2018

То, что вы хотите, чтобы данные были представлены в формате JSON. Для этого ваши данные, собранные из data = Score.objects.all(), должны быть сериализованы и переданы в шаблон как JSON.

Маленький пример:

from django.core import serializers

def get_modelAPI(request):
    SomeModel_json = serializers.serialize("json", SomeModel.objects.all())
    data = {"SomeModel_json": SomeModel_json}
    return JsonResponse(data)

Для получения дополнительной информации вы должны прочитать это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...