如何在Django中检索子项

时间:2015-10-30 07:40:10

标签: django

我有一个类似的模型类别:

class Category(TimeStampedModel):
    category_parent = models.ForeignKey('self', blank=True, null=True)
    name = models.CharField(max_length = 200)
    slug = models.SlugField(unique=True)
    def __str__(self):
        return self.name

我想要的是首先显示所有没有父母的类别,然后在嵌套列表中显示他们各自的孩子:例如:

Flowers
  Lilac
  Rose
Trees
  Maple

所以我试过的是:

def get_categories(request):
    categories = Category.objects.filter(category_parent=None)
    return {'categories' : categories}

但是当我试图展示每个类别的孩子时,没有一个出现,按照我的例子,我只得到花和树..

<ul class="nav-list">
     {% for category in categories %}
         <li class="nav-item"><a class="nav-link" href="#">{{ category.name }}</a>
         {% if category.categories %}
              <ul class="nav-submenu">
                {% for subcategory in category.categories %}
                <li class="nav-submenu-item"><a href="#">{{ subcategory.name }}</a></li>
                {% endfor %}
              </ul>
         {% endif %}
         </li>
     {% endfor %}
 </ul>

我怎样才能让孩子们接受?

1 个答案:

答案 0 :(得分:1)

您没有指定相关名称&#34;类别&#34;到category_parent字段,这样您就无法通过category.categories访问它。您可以尝试使用此表达式

{% for subcategory in category.category_set.all %}
    <!-- subcategory staff -->
{% endfor %}

在你的模板中。