Python 我想获得2个相关Django模型中的行数

Python 我想获得2个相关Django模型中的行数,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我的models.py中有以下模型,如下所示: class Classroom(models.Model): name = models.CharField(max_length=10) class Student(models.Model): reg_no = models.CharField(max_length=10) name = models.CharField(max_length=64) dob = models.DateField() c

我的models.py中有以下模型,如下所示:

class Classroom(models.Model):
    name = models.CharField(max_length=10)

class Student(models.Model):
    reg_no = models.CharField(max_length=10)
    name = models.CharField(max_length=64)
    dob = models.DateField()
    current_class = models.ForeignKey(Classroom, on_delete=models.CASCADE)
我想数一数每个班有多少学生。例如,如果我们有10名学生在一班,15名学生在二班,20名学生在三班,25名学生在四班等等

我想展示如下内容:

class Classroom(models.Model):
    name = models.CharField(max_length=10)

class Student(models.Model):
    reg_no = models.CharField(max_length=10)
    name = models.CharField(max_length=64)
    dob = models.DateField()
    current_class = models.ForeignKey(Classroom, on_delete=models.CASCADE)
第1(10)类 第2类(15) 第3类(20) 第4类(25)


如果有人能帮我,我会非常感激。提前谢谢

使用
计数
注释

from django.db.models import Count

class_rooms = Classroom.objects.all().annotation(students_count=Count("student"))
然后:

for room in class_rooms:
    print(room.students_count)

您还可以直接使用教室模型中的反向关系

for room in Classroom.objects.all():
   print(room.student_set.count())

问候

像这样的
Student.objects.all().values('current_class').annotate(total_students=Count('current_class'))
感谢@Charnel的响应,我尝试了您的解决方案,但出现了以下错误<代码>“函数”对象没有属性“值”这很奇怪
all()
shout返回queryset,但不返回函数。你们推翻模型管理器了吗?我的坏@Charnel,我错过了括号。但现在我得到了一个不同的错误
TypeError:“QuerySet”对象不支持项分配
能否显示您正试图运行的确切代码?谢谢你们两位提出的解决方案,我确实尝试了两种解决方案,但都不起作用。获取以下错误:
AttributeError:“function”对象没有属性“annotate”
谢谢@LetItBeAndre我能够获取计数,但是我如何以以下格式显示:Class 1(10)、Class 2(20)以及类似的格式。嘿@Shahzan要打印格式,您只需像这样编写打印:print(f'Class{room.pk}({room.student_set.count()}'))再次感谢,@LetItBeAndre:)