将python列表转换为特定的javascript格式



使用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年1月"、"2015年2月"one_answers"2015年3月"(,然后我需要按团队对所有分数进行分组。最后的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轴标签,另一个用于数据(?我是否使用多维列表?还是字典?

您希望将数据表示为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)

想要了解更多信息,你应该阅读这篇文章。

最新更新