Привет всем Я борюсь с циклом for в попытке сделать фильтр категорий (Django - Bootstrap).
Как говорится в заголовке, у меня проблема с попыткой сделать фильтр категорий, я уже сделал один для моего блога, потому что у него только пара категорий без подкатегорий, но этот отличается, потому что у него есть категории и подкатегории с полями от одного до многих, и я уже пробовал несколько подходов, но не смог заставить его работать. Я буду рад, если кто-нибудь поможет мне.
Это была моя последняя попытка, я пытался сделать его похожим на мои другие менее сложные фильтры категорий.
Храните уникальный html-шаблон.
<section class="page-section cta rounded p-6 p-md-5 m-md-4 text-center bg-light">
<div class="container">
<div class="row">
<div class="col-xl-9 text-center mx-auto">
<h2 class="section-heading mb-4">
<span class="section-heading-lower">Horizontal</span>
</h2>
<div style="padding-bottom: 1%; padding-top: 3%;">
<h4><span class="section-heading-upper">CATEGORIAS: </span></h4>
{% for itemWide in itemsWide %}
{% for category in itemWide.categories.all %}
<a type="button" class="btn btn-dark" href="{% url 'storePacks' %}">
<span class="section-heading-upper" style="font-size:small;">{{category.name}}</span>
</a>
{% endfor %}
{% endfor %}
</div>
</div>
</div>
</div>
</section>
Модель магазина
class ItemCategory(models.Model):
name = models.CharField(max_length=50)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now_add=True)
class Meta:
verbose_name = 'itemCategory'
verbose_name_plural = 'itemsCategories'
def __str__(self):
return self.name
class SubCategoryVert(models.Model):
parentCategory = models.ForeignKey(ItemCategory, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now_add=True)
class Meta:
verbose_name = 'SubCategoryVert'
verbose_name_plural = 'SubCategoriesVert'
def __str__(self):
return self.name
class SubCategoryWide(models.Model):
parentCategory = models.ForeignKey(ItemCategory, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now_add=True)
class Meta:
verbose_name = 'SubCategoryWide'
verbose_name_plural = 'SubCategoriesWide'
def __str__(self):
return self.name
class ItemVert(models.Model):
name = models.CharField(max_length=50)
categories = models.ForeignKey(SubCategoryVert, on_delete=models.CASCADE)
detail = models.CharField(max_length=50, null=True, blank=True)
img = models.ImageField(upload_to='store/img/Vert', null=True, blank=True)
price = models.FloatField()
stock = models.BooleanField(default=True)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now_add=True)
class Meta:
verbose_name = 'itemVert'
verbose_name_plural = 'itemsVert'
class ItemWide(models.Model):
name = models.CharField(max_length=50)
categories = models.ForeignKey(SubCategoryWide, on_delete=models.CASCADE)
detail = models.CharField(max_length=50, null=True, blank=True)
img = models.ImageField(upload_to='store/img/Wide', null=True, blank=True)
price = models.FloatField()
stock = models.BooleanField(default=True)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now_add=True)
class Meta:
verbose_name = 'itemWide'
verbose_name_plural = 'itemsWide'
Если необходимо сохранить url
urlpatterns = [
path('', views.store, name='store'),
path('packs/', views.storePacks, name='storePacks'),
path('unico/', views.storeUnique, name='storeUnique'),
]