如何仅在Django中按日期时间字段的月份部分聚合数据

时间:2012-11-22 10:42:48

标签: python django orm

所以我的模型是这样的:

class Blog(models.Model):
    title = models.CharField(max_length=100)
    publication_date = models.DateField()

现在我希望每个月都能获得博文的数量。原始的sql看起来像:

SELECT COUNT (*), EXTRACT(MONTH FROM publication_date) AS month FROM blog GROUP BY month;

我找到的一个解决方案是here,它建议首先获取一个日期列表,然后使用filter为每次迭代遍历它。我不喜欢它,我正在寻找一种方法来获得结果而不使用循环。

1 个答案:

答案 0 :(得分:1)

您可以使用Blog.objects.filter(publication_date__range=[start_of_month, end_of_month])的效果来获取这两个日期之间的所有项目。有关详细信息,请参阅range