【发布时间】:2019-12-02 08:03:29
【问题描述】:
我的代码有问题,相同的子类别显示在所有类别下,如果一个类别没有子类别,那么该类别也显示子类别,我想显示一个类别是否有子类别,那么它应该是显示在下拉列表中,否则应为空白。
这是我的 models.py 文件...
class WebCategory(models.Model):
name = models.CharField(max_length=50, unique=True, verbose_name='Category name')
slug = models.SlugField(verbose_name='Slug')
title = models.CharField(max_length=165, null=True)
metadesc = models.TextField(max_length=165, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = 'WebCategory'
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(WebCategory, self).save(*args, **kwargs)
def __str__(self):
return self.name
class WebSubCategory(models.Model):
category = models.ForeignKey('WebCategory', related_name='subcategory', on_delete=models.CASCADE, blank=True,
null=True, verbose_name='Select category')
name = models.CharField(max_length=50)
slug = models.SlugField(unique=True, null=True)
title = models.CharField(max_length=100, null=True)
metadesc = models.TextField(max_length=165, null=True)
description = RichTextField(blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = 'WebSubCategory'
def __str__(self):
return self.name
这是我的views.py文件
def home(request):
context = RequestContext(request)
category_list = WebCategory.objects.order_by('-created_at')[:5]
subcategory_list = WebSubCategory.objects.order_by('-created_at')[:5]
context_dict = {'webcat': category_list, 'websubcat':subcategory_list}
return render_to_response('home.html', context_dict, context)
这是我的 header.html 文件..
<ul class="nav nav-pills" id="mainNav">
{%if webcat %}
{% for category in webcat %}
<li class="dropdown dropdown-mega">
<a class="dropdown-item dropdown-toggle" href="JavaScript:void()">
{{category}}
</a>
<ul class="dropdown-menu">
{% if websubcat %}
<li>
<div class="dropdown-mega-content">
<div class="row">
{% for subcategory in websubcat.all %}
<div class="col-lg-3">
<span class="dropdown-mega-sub-title">Elements 1</span>
<ul class="dropdown-mega-sub-nav">
<li><a class="dropdown-item" href="{{subcategory.slug}}">{{subcategory.name}}</a></li>
</ul>
</div>
{% endfor %}
</div>
</div>
</li>
{% else %}
<p>No category Found</p>
{% endif %}
</ul>
</li>
{% endfor %}
{% else %}
<p>No Category Found</p>
{% endif %}
请指导我如何在类别下显示特定的子类别(如果一个类别有子类别),现在我正在获得所有类别下的子类别。
【问题讨论】:
-
您的视图功能似乎在这里被“切断”了(在每行一定数量的字符之后)。
-
现在改变视图功能
-
你能告诉我 WebCategory 和 WebSubCategory 模型吗?看起来您没有在关系之后的模板中运行 for 循环。
-
我已经更新了我的模型,请检查一次..
标签: django django-models django-rest-framework django-templates django-views