【发布时间】:2019-05-04 17:08:01
【问题描述】:
我为查询集中的每个对象选择了一个相关对象。如何为每个值注释一个计算值?
型号:
class School(models.Model):
name = models.CharField(max_length=255)
class Teacher(models.Model):
name = models.CharField(max_length=255)
school = models.ForeignKey(School)
class Student(Entity):
name = models.CharField(max_length=255)
school = models.ForeignKey(School)
我想获取所有老师和每个老师的学校,以及该学校的学生人数。
这是我尝试过的:
teachers = Teacher.objects.select_related('school').annotate(student_count=Count('school__student'))
但我可以看出这是错误的,因为学生人数需要每所学校。
我希望之后能够用我的查询集做这样的事情:
for teacher in teachers:
print(teacher.name, teacher.school.name, teacher.school.student_count)
【问题讨论】:
-
您可以使用
teacher.student_count获取它。您总是在您查询的模型上进行注释。由于在您的建模中,一位老师属于单一学校,因此结果没有什么不同。