Python Django按日期名称聚合

Python Django按日期名称聚合,python,django,Python,Django,我已尝试创建“星期几汇总”,我有以下代码: 在: 输出: 但我想用天的名字,而不是数字来合计。 我需要在周一、周二等时间进行访问。从2015.08开始的周一应该与从2015.06或2012.02开始的周一在同一个“包”中。我认为这不是您期望的解决方案,但可能可以帮助您: 星期日: MyMode.objects.values('day').annotate(Sum('visits')).filter(day__week_day=1) 更改其他周末的筛选值。天从周日=1,周一=2,等等开始。对于D

我已尝试创建“星期几汇总”,我有以下代码:

在:

输出:

但我想用天的名字,而不是数字来合计。
我需要在周一、周二等时间进行访问。从2015.08开始的周一应该与从2015.06或2012.02开始的周一在同一个“包”中。

我认为这不是您期望的解决方案,但可能可以帮助您:

星期日:

MyMode.objects.values('day').annotate(Sum('visits')).filter(day__week_day=1)
更改其他周末的筛选值。天从周日=1,周一=2,等等开始。

对于Django 1.8+:

from django.db.models import Func

class DayOfWeek(Func):
    """ Sunday == 0, ..., Saturday == 6 """
    template = 'extract(dow from %(expressions)s)'

>>> (
    MyMode.objects.annotate(dow=DayOfWeek(F('day')))
                  .values('dow')
                  .annotate(c=Count('dow'))
)

[{'c': 185, 'dow': 0.0}, {'c': 178, 'dow': 5.0}]

对于Django 1.7-,我相信您需要进行原始查询。

您使用的是哪个数据库后端?我使用的是PostgreSQL
MyMode.objects.values('day').annotate(Sum('visits')).filter(day__week_day=1)
from django.db.models import Func

class DayOfWeek(Func):
    """ Sunday == 0, ..., Saturday == 6 """
    template = 'extract(dow from %(expressions)s)'

>>> (
    MyMode.objects.annotate(dow=DayOfWeek(F('day')))
                  .values('dow')
                  .annotate(c=Count('dow'))
)

[{'c': 185, 'dow': 0.0}, {'c': 178, 'dow': 5.0}]