我是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,这样如果我在课程中添加作业,它会自动将作业与课程中注册的所有学生联系起来?
答案 0 :(得分:2)
有很多方法可以达到这个效果。您可以使用signals framework连接一个新作业的post_save操作,以触发将该作业复制到课程中的每个学生
或者你可以reimplement the save() method模型在调用save时直接做同样的事情
或者您可以在模型上创建实用程序类型类方法,如create_assignment_for_course。因为这也会显示在课程实例上,所以通常的方法是将其放在a custom manager上。管理器位于Model.object属性中。 当然,在为整个课程创建作业时,您必须专门使用此classmethod / manager方法