Увеличение целого числа при создании объекта в Django

Здравствуйте, у меня есть две модели Учебный семестр и Зачисления, я хотел подсчитать количество студентов на определенном курсе. Практически я хотел иметь поле registered students, которое будет увеличиваться каждый раз, когда создается объект Enrollments. Вот моя модель для Учебного семестра

class TeachingSemester(models.Model):
    department = models.ForeignKey(Department,on_delete=models.CASCADE)
    program    = models.ForeignKey(Program,on_delete=models.CASCADE)
    faculty = models.ForeignKey(FacultyData,on_delete=models.CASCADE)
    semester_choices = (
        ('Spring' , 'Spring'),
        ('Fall'   , 'Fall'),
        ('Summer'  , 'Summer')
    )
    sem_choice = models.CharField(max_length=30,choices=semester_choices,default='Spring')
    course_date      =   models.DateField(default=datetime.date.today())
    section          = models.CharField(max_length=5,default = 1)
    faculty_course     = models.ForeignKey(Course,on_delete=models.CASCADE)

И модель Enrollments

class Enrollment(models.Model):
    student = models.ForeignKey(StudentData,on_delete=models.CASCADE)
    faculty = models.ForeignKey(TeachingSemester,on_delete=models.CASCADE)

Пожалуйста, не делайте этого . Это приведет к большим проблемам с правильным обновлением целого числа. Например, если позже будет удален StudentData, то он удалит и все связанные с ним Enrollment, и, таким образом, множество TeachingSemester нужно будет обновить соответствующим образом. Это может быть довольно сложно - перебрать все возможные сценарии и соответствующим образом обновить объекты TeachingSemester.

Вы можете .annotate(…) [Django-doc] с:

from django.db.models import Count

TeachingSemester.objects.annotate(registered_students=Count('enrollment'))

Объекты TeachingSemester, возникающие в результате этого QuerySet, будут иметь дополнительный атрибут .registered_students.

Вернуться на верх