django - 在 Django 中创建对象时增加整数

标签 django django-models django-views django-signals

您好,我有两个模型教学学期入学,我想计算特定类(class)的学生人数。实际上,我想要一个注册学生字段,每次创建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)

以及注册模型

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 <b>Count</b>

TeachingSemester.objects.annotate(<b>registered_students=Count('enrollment')</b>)

从此 QuerySet 产生的 TeachingSemester 对象将具有一个额外的属性 .registered_students

关于django - 在 Django 中创建对象时增加整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72626917/

相关文章:

python - 编码给出 "' ascii' 编解码器无法编码字符......序号不在范围内(128)“

指定端口时Django runserver错误

Django:查询使用包含列表中的每个值

python - Django - 处理 "enum models"

django - django 中的自定义登录 URL

python - Django / python : How do you start a new process in Python?

python - Django 将自定义查询集获取到 ListView 中

python - 查询表的多对多字段值

python - Django 在不知道字段名称的情况下将模型导出到 csv

django - 在 javascript 文件中使用 Django url