Django,当我们有表层次结构时查询数据

时间:2012-07-09 10:26:57

标签: django django-models hierarchy

让我们考虑一下,我们有三个分层形式的表:

Course 
    Topic 
        Sub-Topic 

或代码:

class Course(models.Model):
    name            = models.CharField(max_length = 100)

class Topic(models.Model):
    name            = models.CharField(max_length = 100)
    course          = models.ForeignKey('Course' , null = True , blank = True)

class SubTopic(models.Model):
    name            = models.CharField(max_length = 100)
    topic          = models.ForeignKey('Topic' , null = True , blank = True)

我想要的是获取课程,主题和子主题列表,以便在导航系统中表示。

我知道select_related()可以跟随并发现任何深度的ForeignKeys。如何在我的场景中使用该功能?

1 个答案:

答案 0 :(得分:1)

如果您只想输出到模板,可以使用_set,例如如果您将课程列表传递给模板。

{% for c in courses %}
    {{c.name}}
    {% for t in c.topic_set.all %}
       {{t.name}}
       {% for st in t.subtopic_set.all %}
           {{st.name}}
       {% endfor %}
    {% endfor %}
{% endfor %}
相关问题