2011-12-09 8 views
3

で多対多フィールドの値をチェックするI私のDjangoのアプリで以下のモデルがあります:私のテンプレートでジャンゴ:テンプレート

class Group(models.model): 
    name=models.CharField(max_length=30) 
    users=Models.ManyToManyField(User) 

が、私はそれぞれの下のボタンとともに、各グループを表示したいの。ユーザーがすでにグループに入っている場合は、[グループを離れる]ボタンを表示します。まだグループに属していない場合は、[グループに参加]ボタンを表示します。

現在ログインしているユーザーが各グループに属するかどうかを判断する最も効率的な方法は何ですか?私はむしろ表示されている各グループのdbを照会するのではなく、次のようにすれば起こると思われます。

{% if user in group.users.all %} 

ありがとうございます。

答えて

5

このユーザーが属するグループIDのsetを作成してください。 setの主な用途の1つは、メンバーシップテストです。

user_group_set = set(current_user.group_set.values_list('id',flat=true)) 

その後、あなたのテンプレートコンテキストにそれを渡します

return render_to_response('template.html',{'user_group_set':user_group_set}) 

をテンプレートでは、各グループの使用のために:

{% if group.id in user_group_set %} 
+0

優れた、感謝を。 –