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

标签 django sqlite highcharts chart.js django-queryset

我正在尝试使用 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'))

还有等等...

模型.py

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 文件(?)”之类的错误

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

提前感谢您的帮助。

最佳答案

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

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":"..."}]

关于django - 如何将我的 sqlite 数据传递给 django 并制作图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803824/

相关文章:

javascript - 如何使用对象作为 Highcharts 的系列

mysql - 如何合并 django 中的两个查询并选择与两个不相关的表不同的查询

django - 如何在 Django 应用程序的 CI 中处理迁移

python - 使用正则表达式重定向 Django 中的页面?

iphone - 不想在应用程序更新时替换旧数据库

javascript - 在 Highchart 堆栈列总计中鼠标悬停时显示工具提示

python - Django-channels 在模型更改时发送消息

android - 换行符\n 在 textView Android 中未正确显示

java - SQLite问题: database file is locked

javascript - 如何使用 array_merge 在 PHP/Highcharts 中显示非引用命令?