Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中的SUM列_Django_Django Models_Django Aggregation - Fatal编程技术网

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

  • 这个进口商品去哪里了?在models.py中?还是视图.py
  • 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;