Django DRF-按日期分组

Django DRF-按日期分组,django,django-rest-framework,Django,Django Rest Framework,我需要在DRF上按日期对查询集的结果进行分组 “Django模型” 类匹配(models.Model): name=models.CharField(最大长度=100) 平台=models.CharField(最大长度=100) mode=models.CharField(最大长度=100) kills=models.IntegerField() 日期=型号。日期时间字段() “序列化程序” 类MatchesSerializer(serializers.ModelSerializer): 类元:

我需要在DRF上按日期对查询集的结果进行分组

“Django模型”
类匹配(models.Model):
name=models.CharField(最大长度=100)
平台=models.CharField(最大长度=100)
mode=models.CharField(最大长度=100)
kills=models.IntegerField()
日期=型号。日期时间字段()
“序列化程序”
类MatchesSerializer(serializers.ModelSerializer):
类元:
model=models.Matches
字段=(‘名称’、‘平台’、‘模式’、‘终止’、‘日期’)
“视图”
类匹配(泛型.ListAPIView):
serializer_class=serializers.MatchesSerializer
过滤器\后端=(filters.OrderingFilter,)
查找\字段='name'
排序=('-date',)
def get_queryset(自我):
username=self.kwargs['name']
返回models.Matches.objects.filter(name=username)
所需输出(仅为示例):

对我来说,简单的解决方案是在django上创建一个原始查询并创建一个序列化程序,但它感觉不太像Python


因此,似乎DRF有一些漂亮的方法使它看起来更漂亮,也许可以使用to_表示…

您可以使用来自Django ORM的函数raw

results = Matches.objects.raw('SELECT * FROM myapp_matches GROUP BY date')

我使用了itertools.groupby迭代器。检查下面的代码

from itertools import groupby

events = [["2020-04-01", "A"], ["2020-04-01", "B"], ["2020-04-02", "C"], ["2020-04-02", "D"]]

for k, g in groupby(events, lambda x: x[0]):
list = []
    for group in g:
        list.append(group[1])
    output[k] = list
输出将按日期分组,如下所示

{'2020-04-01': ['A', 'B'], '2020-04-02': ['C', 'D']}

请先确定您的订单日期。

您能给我们看一下您的
视图吗。py
?它可能是您应该更改和注释/聚合项目的地方。添加当前视图类,它只显示匹配项列表,而不是分组。您的答案可能在中。您是否检查并尝试了这两个注释似乎都回答了我的问题!你们谁能给我一个答案让我接受?
{'2020-04-01': ['A', 'B'], '2020-04-02': ['C', 'D']}