Django根据公共密钥获得总和

时间:2016-03-10 13:49:08

标签: django django-models django-orm

我有以下两种模式。

class TeacherInfo(models.Model):
    name = models.CharField(max_length=200)
    school_id = models.ForeignKey('admin_app.School')
    timestamp = models.DateTimeField(auto_now=True, blank=True)

class AssignedSheetStatus(models.Model):
    level = models.ForeignKey('admin_app.Levels')
    subject = models.ForeignKey('admin_app.Subject')
    set = models.ForeignKey('admin_app.Set')
    teacher = models.ForeignKey('teacher.TeacherInfo')
    assigned_count = models.PositiveIntegerField(default=0)
    corrected_count = models.PositiveIntegerField(default=0)
    timestamp = models.DateTimeField(auto_now_add=True)

现在我想加入这两个表,以便我name TeacherInfoassigned_countcorrected_count的总和。

通常我会做一位老师:

AssignedSheetStatus.objects.filter(teacher__id=teacher_id).aggregate(Sum('assigned_count'), Sum('corrected_count'))

但在这里,我想要TeacherInfo中的所有老师。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

你可以用另一种方式做到这一点。对TeacherInfo进行注释:

TeachInfo.objects.annotate(Sum('assignedshetsstatus__assigned_count'), Sum('assignedsheetstatus__corrected_count'))