模型中ForeignKeys之间的关系

时间:2012-08-18 03:40:42

标签: django django-models

我是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,这样如果我在课程中添加作业,它会自动将作业与课程中注册的所有学生联系起来?

1 个答案:

答案 0 :(得分:2)

有很多方法可以达到这个效果。您可以使用signals framework连接一个新作业的post_save操作,以触发将该作业复制到课程中的每个学生

或者你可以reimplement the save() method模型在调用save时直接做同样的事情

或者您可以在模型上创建实用程序类型类方法,如create_assignment_for_course。因为这也会显示在课程实例上,所以通常的方法是将其放在a custom manager上。管理器位于Model.object属性中。 当然,在为整个课程创建作业时,您必须专门使用此classmethod / manager方法