Django中的SUM列
我有一个简单的模型,它收集数据(特别是整数)以在表中显示选举结果。我有两个数据来自的区域(当然更多,但现在假设两个)。我想显示每个区域和每个区域的总数,然后在表格底部显示总和 我的基本模型如下Django中的SUM列,django,django-models,django-aggregation,Django,Django Models,Django Aggregation,我有一个简单的模型,它收集数据(特别是整数)以在表中显示选举结果。我有两个数据来自的区域(当然更多,但现在假设两个)。我想显示每个区域和每个区域的总数,然后在表格底部显示总和 我的基本模型如下 class Results(models.Model) region_number = models.Foreignkey(Regions) region_name = models.Charfield() polling_station = models.Charfield()
class Results(models.Model)
region_number = models.Foreignkey(Regions)
region_name = models.Charfield()
polling_station = models.Charfield()
party1 = models.IntegerField()
party2 = models.IntegerField()
party3 = models.IntegerField()
然后我有两个类继承
class GeneralElections(Results)
pass
class RegionalElections(Results)
pass
我希望模板中的打印输出看起来像这样
---------------------------------
regions party1 party2 party3
---------------------------------
1 20 40 60
2 20 80 100
---------------------------------
Total 80 120 160 <------- More Importantly This!
---------------------------------
到目前为止,我已经能够完成一切,除了能够在表格底部打印每列的总和
我所看到的所有地方都说使用django聚合。不过,说明有点模糊。也许因为我是初学者。例如,我不知道应该把相应的代码放在哪里
来自django.db.import SUM
total=Tally.objects.aggregate(总和(“字段名称”))
提前谢谢你 对于每个字段的总和,您可以使用以下内容:
from django.db.models import Sum
agrregated_results = Results.objects.filter(# if you have any).agrregate(Sum('party1'), Sum('party2'), Sum('party3'))
party1_sum = agrregated_results['party1__sum'] or 0
... # same for other fields
对于区域摘要页面:
region_summary = Results.objects.values('region_number').annotate(party1_sum=Sum('party1'), party2_sum=Sum('party2'), party3_sum=Sum('party3')).order_by()
,其中,.values(…).annotate(…).order_by()
转换为:
SELECT fields_in_values_plus_annotation FROM table_name GROUP BY fields_in_values ORDER BY NULL;
聚合更多的是一段时间内的
结果,我认为你要找的是注释
,但当然你仍然可以将聚合
和注释
结合起来,得到“特定投票站的总和”.django.db.models import Sum
在models.py
或views.py
中,我应该将从django.db.models导入Sum
放在哪里?好的做法是使用manager.py
文件,在其中添加默认或自定义模型管理器的功能,但在结果中,无论如何都需要在视图中调用此方法,以便将结果传递给模板上下文,因此答案是-views.py
我需要将其放入views.py
中的新函数中还是放入现有函数中?如果您有现有函数,可以将其放入其中。我有一个现有函数def general\u results(request):general\u elections=GeneralElections.objects.all()context={'general_elections':general_elections,}return render(请求'general.html',context)
如何将代码写入此函数?我在服务器上不断收到错误AttributeError:Manager不可用;结果是抽象的
SELECT fields_in_values_plus_annotation FROM table_name GROUP BY fields_in_values ORDER BY NULL;