Как показать товар по подкатегории в django?
Я хочу показать товар в категории по подкатегории. Я написал это, но он показывает все товары в категории, кроме подкатегории!!!?
я протестировал {% if category.childern.all %} в list.html, но он не работает
model.py
class Category(TranslatableModel):
translations = TranslatedFields(
name = models.CharField(max_length=200,db_index=True),
slug = models.SlugField(max_length=200,db_index=True),
)
parent = models.ForeignKey('self', related_name='children',on_delete=models.CASCADE,blank=True,null=True)
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('shop:product_list_by_category', args=[self.slug])
def __str__(self):
full_path = [self.name]
k = self.parent
while k is not None:
full_path.append(k.name)
k = k.parent
return ' -> '.join(full_path[::-1])
class Product(TranslatableModel):
translations = TranslatedFields(
name = models.CharField(max_length=200,db_index=True),
slug = models.SlugField(max_length=200,db_index=True),
description = models.TextField(blank=True),
price = models.PositiveIntegerField(),
)
category = models.ForeignKey(Category, related_name='products' ,on_delete=models.CASCADE)
image = models.ImageField(upload_to='products/%Y/%m/%d',blank=True)
available = models.BooleanField(default=True)
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now=True)
def get_absolute_url(self):
return reverse('shop:product_detail', args=[self.id,self.slug])
def __str__(self):
return self.name
view.py
def product_list(request,category_slug=None):
category = None
categories = Category.objects.filter(parent=None)
products = Product.objects.filter(available=True)
if category_slug:
language = request.LANGUAGE_CODE
category = get_object_or_404(Category,translations__language_code=language,translations__slug=category_slug)
products = products.filter(category=category)
context = {
'categories':categories,
'category':category,
'products':products,
}
return render(request,'shop/product/list.html',context)
list.html (он отображается, когда пользователь нажимает на подкатегорию в строке меню)
{% extends "shop/index.html" %}
{% block title %}
product list
{% endblock title %}
{% block content %}
<div class="container-fluid">
<div class="row mt-4">
<div class="col-9">
<div class="row">
{% for product in products %}
<div class="col-xl-3 col-lg-4 col-md-4 col-12">
<a href="{{product.get_absolute_url}}" class="text-decoration-none text-secondary">
<div class="single-product" style="width: 18rem;height:300px;">
<img class="product-img" src="{{product.image.url}}" width="200" height="200" alt="Card image cap">
<div class="card-body">
<h5 class="product-content text-center">{{product.name}}</h5>
<p class="product-price text-center">{{product.price}}تومان</p>
</div>
</div>
</a>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endblock content %}
он показывает категорию и подкатегорию хорошо, но продукт не правильный
кто-нибудь может мне помочь?