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

この結果を得るには、いくつかの方法があります。信号フレームワークを使用して、1 つの新しい課題の post_save アクションを接続し、その課題の複製をコース内のすべての学生にトリガーすることができます。

または、モデルの save() メソッドを再実装して、 save が呼び出されたときに同じことを直接行うこともできます。

または、create_assignment_for_course のように、モデルにユーティリティ タイプのクラスメソッドを作成することもできます。これは Course インスタンスにも表示されるため、一般的なアプローチは、これをカスタム managerに配置することです。manager は Model.object 属性にあるものです。もちろん、コース全体の課題を作成するときは、この classmethod/manager メソッドを特に使用する必要があります。

于 2012-08-18T04:01:42.113 に答える