我使用的是 Django 1.5.1、Python 3.3.x,不能为此使用原始查询。
对于使用日期 __range
过滤器的 QuerySet,有没有办法获取按工作日分组的 QuerySet?我正在尝试按工作日对结果进行分组,查询范围在任意两个日期之间(可能相隔一年)。我知道如何 get rows that match a weekday ,但这需要用 7 个查询来查询数据库才能找出每个工作日的数据。
几个小时以来,我一直试图通过对 __week_day
过滤器进行不同的调整来解决这个问题,但没有任何效果。甚至谷歌搜索也无济于事,这让我想知道这是否可能。任何 Django 大师都知道怎么做,如果可能的话?
最佳答案
由于 extra
已弃用,这里有一种使用 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 - Django 按工作日分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254749/