gpt4 book ai didi

python - 在层次结构中显示类别和子类别

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:17 24 4
gpt4 key购买 nike

我正在使用 django-mptt 作为类别模型。我想显示屏幕截图中的类别和子类别列表。我可以显示的方式是所有没有任何结构的列表,如下所示

卧室用品

衣橱

2 件衣橱

3 件衣橱

双人床低床

大号低床

这样就很难知道哪个是父类别,哪个是子类别和孙子类别等。我可以显示上述方式,也可以使用 Category.objects.root_nodes( )

enter image description here

这是我的模型、 View 和模板

class Category(MPTTModel):
name = models.CharField(max_length=100, blank=True, null=True)
image = models.ImageField(null=True, blank=True,
upload_to=upload_furniture_image_path)
slug = models.SlugField(max_length=200, unique=True)
parent = TreeForeignKey('self', null=True, blank=True,
related_name='children', db_index=True)


def furniture(request, slug):
instance = get_object_or_404(Furniture, slug = slug)
cart_obj, new_obj = Cart.objects.new_or_get(request)
categories = Category.objects.all()
context = {
'furniture': instance,
'cart': cart_obj,
'categories': categories
}
return render(request, 'furnitures/furniture.html', context)




<div class="panel-body">
<ul class="nav nav-pills nav-stacked category-menu">
{% for category in categories %}
<li>{{category.name}}</li>
{% endfor %}
</ul>
</div>

所以我的问题是如何分离父类别和子类别,以便我可以如屏幕截图所示显示?

这是父类别及其子类别和孙子类别

enter image description here

最佳答案

由于您使用的是 MPTTModel,因此最好的解决方案是使用 mptt 方法来遍历树。

如果您想在模板中显示树结构,您可能需要围绕 mptt 方法编写模板标签/过滤器,或者使用 mptt 库提供的标签/过滤器。

示例解决方案:

View .py

return render_to_response('furnitures/furniture.html',
{'nodes':Category.objects.all()},
context_instance=RequestContext(request))

模板:

<ul class="root">
{% recursetree nodes %}
<li>
{{ node.name }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>

{% endif %}
</li>
{% endrecursetree %}
</ul>

详细解释了here

关于python - 在层次结构中显示类别和子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com