Я хотел бы получить количество строк в 2 связанных Django моделях - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть следующие модели в моем 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 учеников в классе 1, 15 учеников в классе 2, 20 учеников в классе 3, 25 учеников в классе 4 и т. Д.

Я хотел бы отобразить что-то вроде того, что показано ниже :

Класс 1 (10) Класс 2 (15) Класс 3 (20) Класс 4 (25)

Буду очень благодарен, если кто-нибудь сможет мне помочь с этим. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы также можете работать напрямую с обратной зависимостью от вашей модели класса.

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

С уважением!

0 голосов
/ 13 февраля 2020

Используя Count и annotation:

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)
...