显示对象和相关子对象

时间:2017-08-03 15:37:21

标签: django django-models django-templates django-views

我有两个模型,分类和主题。每个主题属于一个类别(通过外键)。我想在模板中做的是显示一个类别,然后在其下面显示已在该特定类别下提交的所有主题。这是我的models.py:

class Category(models.Model):
    name = models.CharField(max_length=55)

class Topic(models.Model):
    category = models.ForeignKey(Category)
    name = models.CharField(max_length=55)

关于如何实现这一目标的任何想法?谢谢。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您希望向后关注这种关系。

在您看来,您需要将类别传递给模板,例如:

 from django.views.generic import TemplateView
 from .models import Category 

 class MyView(TemplateView):
     template_name = 'path/to/my/template.html'

     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context['categories'] = Category.objects.all()
         return context   

然后在您的模板中,您可以按如下方式实现:

{% for category in categories %}
    <h3>{{ category.name }}</h3>
    <ul>
        {% for topic in category.topic_set.all %}
            <li>{{ topic.name }}</li>    
        {% endfor %}
    </ul>
{% endfor %}