python - Django 按工作日分组?

标签 python django python-3.x django-1.5

我使用的是 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/

相关文章:

python-3.x - Django channel 错误 "took too long to shut down and was killed."

python - 跳过列 pandas/多个以逗号分隔的空列表

python - 为什么 Pytorch 需要 DoubleTensor 而不是 FloatTensor?

Python 正则表达式捕获组拆分问题

ruby-on-rails - 指责 Rails "magic"公平吗?

python - 使用 PK 而不是用户名的选择字段的 ModelForm

python - while 循环删除数据存储中的数据

python - 如何使包对计算机可见

Django 模型 - 自动刷新字段值

java - 在 RobotFramework 中扩展 selenium2library WebElement