Ваша агрегация выведет дикт, если вы добавите print(numerator)
, после него вы увидите дикт {'sum': <value>}
(то же самое со знаменателем).
Вам нужен доступзначение, а затем использовать его:
def calcul(request, slug):
numerator = CF.objects.filter(type='inflow').aggregate(sum=Sum('amount'))['sum']
denominator = Main.objects.filter(slug=slug).aggregate(sum=Sum('total'))['sum']
try:
calculation = numerator / denominator
except ZeroDivisionError:
calculation = 0
return render(request, 'home/detail.html', { 'calculation' : calculation})