我无法在视图页面上显示第三级
模型
class ShopCategory(models.Model):
enabled = models.BooleanField(default=True)
language = models.CharField(max_length=2)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
title = models.CharField(max_length=120)
url = models.SlugField(max_length=200)
查看
def home(request):
categories = ShopCategory.objects.filter(enabled=True, language='en', parent__isnull=True)
return render_to_response('home.html', {'categories': categories}, context_instance=RequestContext(request))
模板
<ul>
{% for category in categories %}
<li>
<a href="/cat/{{ category.url }}/">{{ category.title }}</a>
<ul>
{% for child in category.children.all %}
<li><a href="/cat/{{ category.url }}/{{ child.url }}/">{{ child.title }}</a></li>
{% endfor %}
<ul>
{% for subchild in chil.children.all %}
<li><a href="/cat/{{ chil.url }}/{{ subchild.url }}/">{{ subchild.title }}</a></li>
{% endfor %}
</ul>
</ul>
</li>
{% endfor %}
这就是我得到的:
- Beauty
-- Face
-- Make up
我想要的是:
- Beauty
-- Face
-- Make up
--- Lipstick
但它没有显示唇膏。有什么想法吗?
答案 0 :(得分:1)
在我看来,这是最简单的解决方案:
首先,创建一些&requoive_menu.html&#39;模板并输入此代码:
<li>{{ category.title }}
<ul>
{% if category.children %}
{% for child in category.children.all %}
{%with category=child template_name="shop/recursive_menu.html" %}
{%include template_name%}
{%endwith%}
{% endfor %}
{% endif %}
</ul>
</li>
与您的基本模板相同:
<ul>
{% for category in categories %}
{% include "shop/recursive_menu.html" %}
{% endfor %}
</ul>
说明:
答案 1 :(得分:0)
您有两个错误。首先,您应该遍历child.children.all
,而不是chil...
,其次,最后一个循环需要在第二个循环内移动。