在我看来,使用过滤器和聚合方法进行计算是可行的
首先我是不是区分了学生科目等级
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()
这就是我得到的错误
更新当我尝试此操作时
overall = StudentSubjectGrade.objects.filter( grading_Period=period).filter( Subjects=subject).aggregate(average_grade=Avg('Average') * F( 'Grading_Categories__PercentageWeight') / 100 )
我收到了这个错误
目前没有回答
相关问题 更多 >
编程相关推荐