2012-02-24 6 views
1

私は小さな学習管理システムを構築しています。それは、コースのためのコース、アクティビティのアクティビティレスポンスを持っています。これらのオブジェクト間の関係は次のとおりです。djangoテンプレートのモデルオブジェクトの逆方向ナビゲーションを行うのは良い方法ですか?

ビューでは、コースのすべてのアクティビティと、そのアクティビティに対して受け取ったすべての応答を表形式で一覧にしたいと思います。テンプレートにコースオブジェクトだけを渡した場合、コースからアクティビティへ、そして各アクティビティからActivityResponseへの逆のナビゲーションを行う必要があります。

私の質問は、このような関係をナビゲートする正しい方法は何ですか?逆のナビゲーションはテンプレートから可能であるか、または推奨されていますか、またはビューからテンプレートに適切なdictを渡す必要があるため、すべてのオブジェクトとデータを単純に反復することができます。

class Course(models.Model): 
    users = models.ManyToManyField(User, null=True, blank=True) 
    title = models.CharField(max_length=128) 
    contents = models.TextField() 
    start_date = models.DateField() 
    end_date = models.DateField() 


class Activity(models.Model): 
    course = models.ForeignKey(Course) 
    placement = models.IntegerField() 
    title = models.CharField(max_length=128) 
    contents = models.TextField() 


class ActivityResponse(models.Model): 
    user = models.ForeignKey(User) 
    activity = models.ForeignKey(Activity) 
    when = models.DateTimeField(default=datetime.datetime.now) 
    contents = models.TextField() 

答えて

1

あなたのビューには、モデルグラフの構造に関するすべての知識が必要です。テンプレートは書式設定のためのものでなければなりません。なぜなら、テンプレートは変化に適応するために懐疑的だからです。モデルを微調整してテンプレートをすべて変更しなければならないと自分は嫌になります。

+0

はい私は同意します。私もそのような行に沿って考えていました。ちょうど私の理解のために、テンプレート内のモデルオブジェクトの逆のナビゲーション(関係)を行うことは可能ですか? – Parag

+0

@Parag:はい、そうです。 – Marcin

関連する問題