2016-07-21 11 views
0

モデルのManyToManyFieldによって関連付けられた属性をテンプレートに表示するにはどうすればよいですか?テンプレート内の指定されたモデルのManyToManyField属性を表示

models.py

class Group(models.Model): 
    name = models.CharField() 
    user = models.ManyToManyField(User, related_name='user_group') 

class Team(models.Model): 
    name = models.CharField() 
    group = models.ManyToManyField(Group, related_name='group_team') 

views.py

class Index(ListView): 
    template_name = 'App/index.html' 
    model = User 

    def get_queryset(self): 
     return User.objects.filter(...) 

テンプレート

{% for user in user_list %} 
    {{ user.username }} 
    {{ user.user_group.name }} 
    {{ user.user_group.group_team.name }} 
{% endfor %} 

私は、ユーザー名0を表示することができますfユーザー以外のフィールドではありません。

答えて

2

多対多の関係は、私がしなければならなかったすべてはそれらを反復さ多くのオブジェクトがありますので:アップデート

{% for group in user.user_group.all %} 
    {{ group.name }} 
{% endfor %} 

を:トドルはprefetch_related回避不要なデータベースが

User.objects.filter(...).prefetch_related('user_group') 
+1

を照会追加通りあなたの 'get_queryset'プリフェッチ' user_groups'は、 'User.objects.filter(...)。prefetch_related( 'user_group')'です。 – Todor

関連する問題