Увеличение целого числа при создании объекта в 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
.