0

如果这是一个简单的问题,我是 Django 的新手,请原谅,但我很难说清楚。我已经找了很久的答案了。

假设我正在构建一个非常简单的成绩簿应用程序。

models.py(省略了代码)

class Course(models.Model):
    ...

class Student(models.Model):
    students = models.ManyToManyField(Course)
    ...

class Assignment(models.Model):
    course = models.ForeignKey(Course)
    student = models.ForeignKey(Student)
    ...

有没有办法设置models.py,这样如果我向课程添加作业,它会自动将作业与课程中注册的所有学生相关联?

4

1 回答 1

2

有多种方法可以实现这一结果。您可以使用信号框架来连接一个新作业的 post_save 操作,以触发将该作业复制给课程中的每个学生

或者您可以重新实现模型的 save() 方法,以便在调用 save 时直接执行相同的操作

或者,您可以在模型上创建一个实用程序类型类方法,例如 create_assignment_for_course。因为这也会出现在 Course 实例上,所以一般的方法是把它放在自定义 manager上。管理器位于 Model.object 属性中。当然,在为整个课程创建作业时,您必须专门使用这个 classmethod/manager 方法

于 2012-08-18T04:01:42.113 回答