如何检索Django中的子项
我有这样一个模型类别:如何检索Django中的子项,django,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.nam
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>
{categories%%中的类别为%s}
-
{%if category.categories%}
{category.categories%}中的子类别为%
{%endfor%}
{%endif%}
{%endfor%}
如何也获取子项?您没有为category\u父字段指定相关名称“categories”,因此无法通过category.categories访问它。您可以尝试使用此表达式
{% for subcategory in category.category_set.all %}
<!-- subcategory staff -->
{% endfor %}
{%用于category.category\u set.all%}
{%endfor%}
在您的模板中。查看mptt算法,它将为您省去麻烦—您完全正确!但即使替换了这个,我也得到了同样的结果:没有显示子项,我只有没有父项的类别。那么它应该可以工作了。您是否也将模板中的if子句从{%if category.categories%}更改为{%if category.categories\u set.all%}?