用总费用减去总预算

时间:2019-09-03 14:24:16

标签: django django-orm

models.py

class Add(models.Model):
    budget = models.IntegerField(blank=True, null=True)
    date = models.DateTimeField(auto_now=False, auto_now_add=False, blank=True)
    expense = models.IntegerField(default=0)

Views.py

def home_page(request):
    bud = Add.objects.aggregate(Sum('budget'))
    exp = Add.objects.aggregate(Sum('expense'))
    context = {'bud':bud, 'exp':exp,'budexp':budexp}
    return render(request, 'home.html', context,)

我想减去芽的总数和exp的总数(bud-exp),我该​​怎么做。

1 个答案:

答案 0 :(得分:0)

您可以在此处将汇总合并到一个查询中。这将减少数据库的“往返”次数,从而也提高了性能:

from django.db.models import F, Sum

def home_page(request):
    context = Add.objects.aggregate(
        bud=Sum('budget'),
        exp=Sum('expense'),
        budexp=Sum('budget')-Sum('expense')
    )
    return render(request, 'home.html', context,)

这里context将包含三个项目:budexpbudexp