首页 > 解决方案 > Django:通过模板中的模型显示多对多关系

问题描述

我通过中间模型建立了这种多对多关系:

class Group(models.Model):
    members = models.ManyToManyField(Student, through='NamedMembershipClub')

class Membership(models.Model):
    year = models.IntegerField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    group = models.ForeignKey(Group, on_delete=models.CASCADE)

我正在尝试显示成员加入我的模板的年份。我在这篇文章上读到我应该使用members_set.all

{% for member in object.members_set.all %}
    <p>{{member.user.first_name}} {{member.year}}</p> 
{% endfor %}

但它不会产生任何输出,只是没有进入循环,因为集合是空的。我也试过:

{% for member in object.members.all %}
    <p>{{member.first_name}}</p> 
{% endfor %}

风景:

class DetailGroupView(TemplateView):
    template_name = 'group/detail.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        self.object = Group.object.get(slug=kwargs['slug'])
        context['object'] = self.object
        return context

这让人有些满意,因为我可以在 Membership 模型中显示用户但不能显示相关数据。有没有办法直接在模板中获取集合?谢谢!我正在运行 Django 3.0。

标签: djangodjango-models

解决方案


推荐阅读