首页 > 解决方案 > Django:+:'int'和'str'不支持的操作数类型

问题描述

我想使用 aggregate(sum()) 函数对模型的所有字段求和,但出现此错误。

视图.py

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

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

模型.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

标签: djangodjango-modelsdjango-views

解决方案


您不能使用内置sum函数对值求和:您指定使用Sum表达式 [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)

推荐阅读