如何将我的sqlite数据传递给django,并制作图表?

问题描述 投票:0回答:1

我正在尝试使用sqlite数据库中的数据制作折线图。

但我不知道如何将我的数据传递给views.py和html模板文件。

我想制作折线图(x轴:日期,y轴:按日期计算)

我尝试使用原始查询集和其他东西...

requestCnt = ActivityLog.objects.raw("SELECT date(doDate), count(requestType) FROM mainApp_activitylog GROUP BY doDate")

要么

requestCnt = ActivityLog.objects.values('doDate').annotate(Count('requestType'))

等等...

models.朋友

class ActivityLog(models.Model):
    doDate = model.DateTimeField()
    userIP = models.CharField(max_length=200)
    userName =models.CharField(max_length=200)
    requestType = models.CharField(max_length=200)

下面是我的原始sqlite查询。

sqlite> SELECT date(doDate), count(requestType) FROM mainApp_activitylog GROUP BY doDate;

结果如下

2019-04-15|3
2019-04-16|16
2019-04-17|13
2019-04-18|10
2019-04-19|13
2019-04-22|24

如何将上述结果传递给X-Axle和Y-axle?

我想制作折线图(X轴:日期,Y轴:请求按日期计算)

我有一点想法,我应该使用Json转储或类似的东西。

我已经遇到过诸如“无法序列化为Json文件(?)”之类的错误

我真的希望有人能解决我的问题。

Thx提前为您提供帮助。

django sqlite highcharts chart.js django-queryset
1个回答
1
投票

您可以将查询集发送到上下文中的模板,并使用其中的值。

class YourTemplate(TemplateView):
    def get_context_data(self, **kwargs):
        requestCnt = ActivityLog.objects.annotate(request_count=Count('requestType')).values('doDate', 'request_count')
        context = super().get_context_data(**kwargs)
        context["data"] = requestCnt
        return context

然后在模板中,您可以使用data变量来获取轴的数据。数据格式如下:

[{"doDate":"...", "request_count":"..."}, {"doDate":"...", "request_count":"..."}]
© www.soinside.com 2019 - 2024. All rights reserved.