Sam*_*ing 8 python django date graph
在我的Django模型中,我有一个非常简单的模型,它代表一次事件(例如发生服务器警报):
class EventOccurrence:
event = models.ForeignKey(Event)
time = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
我的最终目标是生成一个表格或图表,显示过去n周内事件发生的次数.
所以我的问题有两个部分:
group_by在这个星期的一周time?group_by为任何缺失的周数添加零值?例如,对于第二部分,我想像这样转换结果:
| week | count | | week | count |
| 2 | 3 | | 2 | 3 |
| 3 | 5 | —— becomes —> | 3 | 5 |
| 5 | 1 | | 4 | 0 |
| 5 | 1 |
Run Code Online (Sandbox Code Playgroud)
在Django中最好的方法是什么?一般的Python解决方案也行.
Django DateField以及datetime不支持周属性.要在一个查询中获取所有内容,您需要执行以下操作:
from django.db import connection
cursor = connection.cursor()
cursor.execute(" SELECT WEEK(`time`) AS 'week', COUNT(*) AS 'count' FROM %s GROUP BY WEEK(`time`) ORDER BY WEEK(`time`)" % EventOccurrence._meta.db_table, [])
data = []
results = cursor.fetchall()
for i, row in enumerate(results[:-1]):
data.append(row)
week = row[0] + 1
next_week = results[i+1][0]
while week < next_week:
data.append( (week, 0) )
week += 1
data.append( results[-1] )
print data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |