编程语言
首页 > 编程语言> > python – Django Group By Weekday?

python – Django Group By Weekday?

作者:互联网

我正在使用Django 1.5.1,Python 3.3.x,并且不能使用原始查询.

对于使用日期__range过滤器的QuerySet,有没有办法获得按工作日分组的QuerySet?我试图按工作日对结果进行分组,查询范围介于任意两个日期之间(可能相差多达一年).我知道如何使用get rows that match a weekday,但这需要对数据库进行7次查询,以便找出每个工作日的数据.

通过使用__week_day过滤器尝试不同的调整,我一直想通过几个小时来解决这个问题,但没有任何工作.即使谷歌搜索没有帮助,这让我想知道这是否可能.任何Django大师都在这里知道如果有可能吗?

解决方法:

由于不推荐使用额外功能,因此这是使用ExtractDayOfWeek在一周中进行分组的新方法.

from django.db.models.functions import ExtractWeekDay
YourObjects.objects
    .annotate(weekday=ExtractWeekDay('timestamp')) 
    .values('weekday')                          
    .annotate(count=Count('id'))                  
    .values('weekday', 'count')   

这将返回如下结果:

[{'weekday': 1, 'count': 534}, {'weekday': 2, 'count': 574},.......}

值得注意的是,1 =周日和周六= 7

标签:python,python-3-x,django,django-1-5
来源: https://codeday.me/bug/20190620/1243440.html