【问题标题】:Query to get total in django在 django 中查询总数
【发布时间】:2020-03-17 07:17:58
【问题描述】:

我需要找到具有最大 fat_intake(整体 fat_intake)的 user_id。

数据库:

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'))

【问题讨论】:

  • 图片中怎么出现46?
  • 当你添加用户 1 的所有 fat_intake 时,它​​是 46 @NishantNawarkhede
  • 10 + 15 + 30 + 14 = 69
  • 很抱歉,它实际上是 69,我会更新@NishantNawarkhede
  • 你有答案吗@NishantNawarkhede

标签: python django django-models django-rest-framework django-views


【解决方案1】:

你可以这样做,

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]:

【讨论】:

  • 实际上我已经尝试了一些东西,但它没有用,上面的方法也不起作用@Nishant Nawarkhede
  • 刚刚更新请检查,您的代码没有给出总数
【解决方案2】:

这是对你有用的正确答案。

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

输出是

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

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2023-01-07
    相关资源
    最近更新 更多