django - 如何将我的 sqlite 数据传递给 django 并制作图表?
问题描述
我正在尝试使用 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-Axle:date , Y-axle: request count by date)
我有一点想法,我应该使用 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":"..."}]
推荐阅读
- c# - 如何使用实体框架同时更新另一个表中该键是外键的主键
- html - Bootstrap 侧边栏没有得到正确的高度
- python - 无法提取
使用网页抓取进行标记。结果返回 null
- swift - 如何防止触摸位置处理的 SKShapeNode 超出圆形路径?
- c# - 在 C# 应用程序中将 .__comobj WIA 转换为 byte[]
- ruby-on-rails - 如何确保rails中的所有语言环境文件都具有所有键
- haproxy - 使用 haproxy 通过代理发送 HTTP
- python - Django Crispy_Form 无法在 HTML 中呈现
- c# - 无法在字符串c#的列表中添加项目
- typescript - 打字稿条件无效参数类型