通过查询将具有相同的ForeignKey字段的多行合并

时间:2018-07-16 20:43:14

标签: python django aggregate django-queryset

当前Model.objects.all()创建:

 FK Column  Column1  Column2  Column3
  Zone 1        19      23       67
  Zone 2        45      12       76
  Zone 1        23      98       34
  Zone 2        12      56       23

预期结果:

 FK Column  Column1  Column2  Column3
  Zone 1        42      101       111
  Zone 2        57      68        99

FK自动组合成一行。

我应该使用哪个查询来实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以将.values(..).annotate(..).order_by(..)一起使用:

Model.objects.values(
    'fk_column'
).annotate(
    sumcol1=Sum('col1'),
    sumcol2=Sum('col2'),
    sumcol3=Sum('col3'),
).order_by('fk_column')

这将导致QuerySet个离子对中的dict个。每个词典包含一个'fk_column''sumcol1''sumcol2''sumcol3'。然后可以进一步处理这些参数。