Модель категорий в Django
подскажите как на Django организовать категории например для такого шаблона
{% for category in main_category %}
<li class="menu-item menu-item-has-children has-mega-menu"><a href="#">{{category.name}}
</a>
<div class="mega-menu">
<div class="mega-wrap">
<div class="mega-column">
<ul class="mega-item mega-features">
<li><a href="product-listing.html">{{category.brand}}</a></li>
<li><a href="product-listing.html">FEATURES SHOES</a></li>
<li><a href="product-listing.html">BEST SELLERS</a></li>
<li><a href="product-listing.html">NOW TRENDING</a></li>
<li><a href="product-listing.html">SUMMER ESSENTIALS</a></li>
<li><a href="product-listing.html">MOTHER'S DAY COLLECTION</a></li>
<li><a href="product-listing.html">FAN GEAR</a></li>
</ul>
</div>
<div class="mega-column">
<h4 class="mega-heading">{{category.brand}}</h4>
<ul class="mega-item">
<li><a href="product-listing.html">{{category.brand}}</a></li>
<li><a href="product-listing.html">Running</a></li>
<li><a href="product-listing.html">Training & Gym</a></li>
<li><a href="product-listing.html">Basketball</a></li>
<li><a href="product-listing.html">Football</a></li>
<li><a href="product-listing.html">Soccer</a></li>
<li><a href="product-listing.html">Baseball</a></li>
</ul>
</div>
<div class="mega-column">
<h4 class="mega-heading">CLOTHING</h4>
<ul class="mega-item">
<li><a href="product-listing.html">Compression & Nike Pro</a></li>
<li><a href="product-listing.html">Tops & T-Shirts</a></li>
<li><a href="product-listing.html">Polos</a></li>
<li><a href="product-listing.html">Hoodies & Sweatshirts</a></li>
<li><a href="product-listing.html">Jackets & Vests</a></li>
<li><a href="product-listing.html">Pants & Tights</a></li>
<li><a href="product-listing.html">Shorts</a></li>
</ul>
</div>
<div class="mega-column">
<h4 class="mega-heading">Accessories</h4>
<ul class="mega-item">
<li><a href="product-listing.html">Compression & Nike Pro</a></li>
<li><a href="product-listing.html">Tops & T-Shirts</a></li>
<li><a href="product-listing.html">Polos</a></li>
<li><a href="product-listing.html">Hoodies & Sweatshirts</a></li>
<li><a href="product-listing.html">Jackets & Vests</a></li>
<li><a href="product-listing.html">Pants & Tights</a></li>
<li><a href="product-listing.html">Shorts</a></li>
</ul>
</div>
<div class="mega-column">
<h4 class="mega-heading">BRAND</h4>
<ul class="mega-item">
<li><a href="product-listing.html">NIKE</a></li>
<li><a href="product-listing.html">Adidas</a></li>
<li><a href="product-listing.html">Dior</a></li>
<li><a href="product-listing.html">B&G</a></li>
</ul>
</div>
</div>
</div>
</li>
{%endfor%}
<li class="menu-item"><a href="#">Women</a></li>
<li class="menu-item"><a href="#">Kids</a></li>
<li class="menu-item menu-item-has-children dropdown"><a href="#">News</a>
<ul class="sub-menu">
<li class="menu-item menu-item-has-children dropdown"><a href="blog-grid.html">Blog-grid</a>
<ul class="sub-menu">
<li class="menu-item"><a href="blog-grid.html">Blog Grid 1</a></li>
<li class="menu-item"><a href="blog-grid-2.html">Blog Grid 2</a></li>
</ul>
</li>
<li class="menu-item"><a href="blog-list.html">Blog List</a></li>
</ul>
</li>
<li class="menu-item menu-item-has-children dropdown"><a href="#">Contact</a>
<ul class="sub-menu">
<li class="menu-item"><a href="contact-us.html">Contact Us #1</a></li>
<li class="menu-item"><a href="contact-us.html">Contact Us #2</a></li>
</ul>
</li>
</ul>
</div>
Ответы (1 шт):
Автор решения: Sherlock
→ Ссылка
Я делал так:
models.py:
class Category(models.Model):
parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, verbose_name='Основная категория')
category_text = models.CharField(max_length=100, verbose_name='Название')
def __str__(self):
return self.category_text
Категория без parent считается главной, категория с указанным parrent считается подкатегорией.
views.py:
def index(request):
main_category = Category.objects.filter(parent=None)
subcategory = Category.objects.exclude(parent=None)
return render(request, 'шаблон.html', {'main_category': main_category, 'subcategory': subcategory})
html:
<div class="mega-column">
{% for category in main_category %}
{% if category.parent == None %}
<h4 class="mega-heading">{{ category }}</h4>
{% endif %}
<ul class="mega-item">
{% for subcategories in subcategory %}
{% if subcategories.parent.id == category.id %}
<li><a href="product-listing.html">{{ subcategories }}</a></li>
{% endif %}
{% endfor %}
</ul>
{% endfor %}
</div>