如何使用Djagno将类别中的子类别显示为数据折叠

时间:2018-12-03 07:57:32

标签: django django-templates django-views

我想使用django将类别中的子类别显示为数据折叠。由于我是菜鸟开发者,所以我无法理解其逻辑。类别和子类别模型是

category.py

class Category(models.Model):
    category = models.CharField(max_length=120)
    timestamp = models.DateTimeField(auto_now_add=True)

subcategory.py

class SubCategory(models.Model):
    sub_category = models.CharField(max_length=120)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True, blank=True)
    timestamp = models.DateTimeField(auto_now_add=True)

我想使用generic.ListView显示这些值

views.py

class PagetListView(ListView):
    model = ModelName
    template_name = 'template.html'
    context_object_name = 'main_content'

def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['category_list'] = Category.objects.all()
        # context['sub_category'] =  
        return context

我想这样表演 enter image description here

2 个答案:

答案 0 :(得分:0)

假设category是Category模型的一个实例

  

category.subcategory_set.all()

将为您提供特定类别的所有子类别的查询集

所以您只需要遍历所有类别并为每个类别获取子类别

答案 1 :(得分:0)

我解决了这个问题。否则就没有逻辑了。

<div>
{% for category in category_list %}
<div id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#{{ category.category }}" aria-expanded="false" aria-controls="collapseTwo">
{{ category.category }}
</button>
</h5>
</div>
<div id="{{ category.category }}" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
<div class="sub-category">
{% for sub_cat in sub_category %}
{% if sub_cat.category == category %}
<a href="{{ sub_cat.get_absolute_url }}" class="">{{ sub_cat.sub_category }}</a><br/>
{% endif %}
{% endfor %}
</div>
</div>
{% endfor %}
</div>