【问题标题】:WHEN to use the annonate and aggregate in Django?何时在 Django 中使用 annonate 和聚合?
【发布时间】:2020-06-15 13:15:03
【问题描述】:

使用聚合和annonate方法的优点和缺点是什么?我已经阅读了有关如何使用聚合和 annonate 方法的文档,但我仍然不知道它们之间的区别,我需要知道何时使用 annonate 和聚合,请告诉我,

我知道在使用 annonate 和聚合方法时,我不是唯一一个对此感到困惑的人。特别是当你是 django 的初学者时,谢谢

【问题讨论】:

标签: django


【解决方案1】:

您可以使用 annotate 为每个项目添加包含一些流程的额外字段到您的查询集中。使用聚合,您可以获得所有查询集项目的结果。例如你有一个这样的模型:

 class MyModel(models.Model):
     field_first = models.IntegerField() 
     field_second = models.IntegerField() 

annotate 示例:如果要为每条记录添加 sum 字段,可以使用 annotate:

items = MyModel.objects.annotate(summary=F('field_first') + F('field_second'))
for item in items:
    print(item.summary) # you have a summary field for items after this

聚合示例:如果要获取所有记录的 field_first 总和,可以使用聚合

total =  MyModel.objects.aggregate(sum_first=Sum('field_first')) # it returns as a dict
print(total) # {'sum_first': total value} 

【讨论】:

  • 啊,我明白了,所以如果我想计算平均值,我将使用聚合,我想计算某个字段,我将使用注释对吗?
  • 这个答案帮助我完全理解,什么时候使用注释和聚合,谢谢
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 2018-04-18
  • 2019-11-15
  • 2012-11-04
  • 2014-09-23
  • 1970-01-01
  • 2023-03-29
  • 2018-04-18
相关资源
最近更新 更多