我想使用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
答案 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>