我有一个这样的QuerySet。我想要基于“ id”的“ n”之和。
这是我的查询集:
<QuerySet [{'id': 1, 'n': 0}, {'id': 2, 'n': 0}, {'id': 2, 'n': 1}, {'id': 3, 'n': 2}, {'id': 4, 'n': 0}, {'id': 5, 'n': 1}, {'id': 5, 'n': 0}]>
这是我的代码:
drivers = Driver.objects.values('id').annotate(
travel_time=Sum(Case(
When(car__ride__pickup_time__isnull=False,
then=(F('car__ride__dropoff_time') - F('car__ride__pickup_time'))),
default=0
)),
).annotate(
n=Case(
When(Q(travel_time__gt=t) & Q(car__model__gte=n), then=Count('car__ride')),
output_field=IntegerField(),
default=0
)
).values('id', 'n')
我不知道如何根据id来分组:(
答案 0 :(得分:0)
您可以使用values
在django中进行分组
在查询集中,您将其按.values('id', 'n')
和.values('id')
分组
删除.values('id', 'n')
,它应该可以工作。
drivers = Driver.objects.values('id').annotate(
travel_time=Sum(Case(
When(car__ride__pickup_time__isnull=False,
then=(F('car__ride__dropoff_time') - F('car__ride__pickup_time'))),
default=0
)),
).annotate(
n=Case(
When(Q(travel_time__gt=t) & Q(car__model__gte=n), then=Count('car__ride')),
output_field=IntegerField(),
default=0
)
).values_list('id', 'n')
它应该可以工作