使用model.objects.all()时,将查询减少到相同的Django模型

使用model.objects.all()时,将查询减少到相同的Django模型,django,django-templates,django-views,Django,Django Templates,Django Views,我需要对来自同一模型的多个列执行聚合求和,目前有7个查询基于我当前的设置 def traffic_list(request, template_name='traffic_list.html'): traffic = Traffic.objects.all() total_sessions = Traffic.objects.all().aggregate(Sum('sessions')).get('sessions__sum') total_new_users = Tr

我需要对来自同一模型的多个列执行聚合求和,目前有7个查询基于我当前的设置

def traffic_list(request, template_name='traffic_list.html'):
    traffic = Traffic.objects.all()
    total_sessions = Traffic.objects.all().aggregate(Sum('sessions')).get('sessions__sum')
    total_new_users = Traffic.objects.all().aggregate(Sum('new_users')).get('new_users__sum')
    total_reminder = Traffic.objects.all().aggregate(Sum('reminder')).get('reminder__sum')
    total_campaigns = Traffic.objects.all().aggregate(Sum('campaigns')).get('campaigns__sum')
    total_new_sales = Traffic.objects.all().aggregate(Sum('new_sales')).get('new_sales__sum')
    total_sales_renewals = Traffic.objects.all().aggregate(Sum('sales_renewals')).get('sales_renewals__sum')

我知道必须有一个干涸的方法来做这件事。谢谢您的帮助。

您可以在一个查询中完成这一切:

traffic = Traffic.objects.all().aggregate(Sum('sessions'),
                                          Sum('new_users'),
                                          ...)
traffic_sessions = traffic.get('sessions_sum')
...

伟大的我有两个问题。非常感谢。