Django计算在聚合法中的应用

2024-09-27 00:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在我看来,使用过滤器和聚合方法进行计算是可行的

首先我是不是区分了学生科目等级

second我过滤学生科目等级中的相关字段

Third我使用聚合计算平均值,对于每个分级类别,我必须将其乘以其百分比权重

这就是计算

*平均值=平均值*评分\类别\百分比权重/100*

students = StudentSubjectGrade.objects.filter(
    grading_Period=period).filter(
    Subjects=subject).order_by(
    'Students_Enrollment_Records', 'Grading_Categories','id'
).values('id','Grading_Categories','Average', 'Grading_Categories__PercentageWeight')

overall = StudentSubjectGrade.objects.filter(
    grading_Period=period).filter(
    Subjects=subject).aggregate(average_grade=Avg('Average') * students[
        'Grading_Categories__PercentageWeight'] / 100)

这是他们的模型

class StudentSubjectGrade(models.Model):
    GradeLevel = models.ForeignKey(EducationLevel, on_delete=models.CASCADE, null=True, blank=True)
    Subjects = models.ForeignKey(Subject, on_delete=models.CASCADE,null=True)
    Students_Enrollment_Records = models.ForeignKey(StudentsEnrolledSubject,on_delete=models.CASCADE, null=True)
    Grading_Categories = models.ForeignKey(gradingCategories,on_delete=models.CASCADE,null=True, blank=True)
    grading_Period = models.ForeignKey(gradingPeriod,on_delete=models.CASCADE,null=True, blank=True)
    Gradedates = models.DateField(auto_now_add=True)
    Average = models.FloatField(null=True, blank=True)

class gradingCategories(models.Model):
    CategoryName = models.CharField(max_length=500, null=True)
    PercentageWeight = models.FloatField()

这就是我得到的错误

enter image description here

更新当我尝试此操作时

overall = StudentSubjectGrade.objects.filter( grading_Period=period).filter( Subjects=subject).aggregate(average_grade=Avg('Average') * F( 'Grading_Categories__PercentageWeight') / 100 )

我收到了这个错误

enter image description here


Tags: trueonmodelsfilterdeletenullcascadeperiod

热门问题