Django: unsupported operand type(s) for +: 'int' and 'str'

Viewed 97

I want to sum all the fields of a model by using aggregate(sum()) function but getting this error.

Views.py

def paymentdailyreport(request):
    cashsum= Payment.objects.filter(PaymentMethod="Cash").aggregate(sum('Amount'))
    print(cashsum)
    context={

    }
    return render(request,'paymentdailyreport.html',context)

Models.py

 class Payment(models.Model):
        Date=models.CharField(max_length=20)
        User=models.CharField(max_length=50)
        PatientName=models.CharField(max_length=50)
        Dentist=models.CharField(max_length=50)
        Scheme=models.CharField(max_length=50)
        PaymentMethod=models.CharField(max_length=50)
        Amount=models.DecimalField(max_digits=20,decimal_places=3)
        def __str__(self):
            return self.Date + " | " + self.User + " | " + self.PatientName
1 Answers

You can not use the builtin sum to sum up the values: you specify to determine the sum with a Sum expression [Django-doc]:

from django.db.models import Sum

def paymentdailyreport(request):
    #                                         use Sum instead of sum ↓
    cashsum= Payment.objects.filter(PaymentMethod="Cash").aggregate(Sum('Amount'))
    print(cashsum)
    context={
        'cashsum': cashsum
    }
    return render(request,'paymentdailyreport.html',context)
Related