将多个行分组为多个字段,并用总和替换一个字段

问题描述

让我们假设我在Django中有这样的模型,由下表和Model类表示(在数据库中,它作为视图存在):

id  Name     Year  Month  Project Name     City    Total
1   Joe Doe  2020  7     Project_A        SomeCity  10
1   Joe Doe  2020  7     Project_A        SomeCity  30
1   Joe Doe  2020  7     Project_A        SomeCity  30
1   Joe Doe  2020  8     Project_A        SomeCity  10
1   Joe Doe  2020  8     Project_A        SomeCity  30
1   Joe Doe  2020  8     Project_A        SomeCity  30

models.py:

class Model_View(models.Model):
  employee_id = models.IntegerField(primary_key=True)
  name = models.TextField()
  year = models.IntegerField()
  month = models.IntegerField()
  project_name = models.TextField()
  city = models.TextField()
  total = models.IntegerField()

我期望的结果是:

id   Name     Year  Month  Project Name   City      Total
1   Joe Doe 2020    7    Project_A      SomeCity    70
1   Joe Doe 2020    8    Project_A      SomeCity    70

我尝试使用以下方法实现这一目标:

Model.objects.values().order_by('Project Name','Month').annotate(Total=Sum('Total'))

不幸的是,此操作的结果与预期的结果略有不同:

id   Name     Year  Month  Project Name   City      Total
1   Joe Doe 2020    7    Project_A      SomeCity    60
1   Joe Doe 2020    7    Project_A      SomeCity    10
1   Joe Doe 2020    8    Project_A      SomeCity    60
1   Joe Doe 2020    8    Project_A      SomeCity    10

乍一看,我认为这些记录是不同的,这就是为什么它没有归类在一起的原因,但是仔细查看后,我发现group_by应该可以处理这些记录。

那么,这里可能有什么问题?

编辑: 我认为从视图而不是从真实模型中检索数据可能很重要。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)