Запрос на получение суммы в django - PullRequest
1 голос
/ 17 марта 2020

Мне нужно найти user_id с максимальным fat_intake (общий fat_intake).

База данных:

id | user_id | fat_intake 
38      1         10     
39      1         15         
40      1         30         
41      1         14         
42      2         20         
43      2         30         
44      2         50        

Каким будет запрос на получение user_id с максимальным потреблением жира?

Ответ должен быть:

Output: 
  {
    "user_id": 1,
    "total_fat_count": 69
  } 

Я пытался:

maxCalorie =  CalorieInfo.objects.annotate(fat_intake=Avg('fat_intake')).aggregate(Max('fat_intake'))

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Вы можете сделать это как,

In [27]: from django.db.models import Sum

In [28]: CalorieInfo.objects.all().values('user_id').annotate(fat_intake=Sum("fat_intake"))
Out[28]: <QuerySet [{'user_id': 1, 'fat_intake': 69}]>

In [29]:
0 голосов
/ 17 марта 2020

это правильный ответ, он должен работать для вас.

users.objects.values('user_id').annotate(total=Sum('fat_intake'))

вывод

<QuerySet [{'user_id': 1, 'total': 69}, {'user_id': 2, 'total': 100}]>
...