pum*_*azi 9 django django-models django-aggregation
我正在使用具有DateTimeField(auto_now_add = True)的类似文章来捕获发布日期(pub_date).这看起来类似于以下内容:
class Article(models.Model):
text = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
我想做一个查询,计算每天添加多少篇文章帖子或条目.换句话说,我想查询条目并按日分组(最后是月,小时,秒等).这看起来类似于SQLite shell中的以下内容:
select pub_date, count(id) from "myapp_article"
where id = 1
group by strftime("%d", pub_date)
;
Run Code Online (Sandbox Code Playgroud)
返回的内容如下:
2012-03-07 18:08:57.456761|5
2012-03-08 18:08:57.456761|9
2012-03-09 18:08:57.456761|1
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何从Django QuerySet获得该结果.我知道如何使用itertools.groupby获得类似的结果,但在这种情况下这是不可能的(下面的解释).
此查询的最终结果将用于显示每天帖子数的图表中.我正在尝试使用Django Chartit包来实现这一目标.Chartit对数据源(DataPool)施加约束.源必须是Model,Manager或QuerySet,因此就我所知,使用itertools.groupby不是一个选项.
所以问题是...... 如何在白天对条目进行分组或聚合,最终得到QuerySet对象?
Mur*_*rlu 31
创建一个仅存储日期数据(而不是时间)的额外字段,并使用Count进行注释:
Article.objects.extra({'published':"date(pub_date)"}).values('published').annotate(count=Count('id'))
Run Code Online (Sandbox Code Playgroud)
结果将是:
published,count
2012-03-07,5
2012-03-08,9
2012-03-09,1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6586 次 |
| 最近记录: |