Как показать товар по подкатегории в 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 %}

он показывает категорию и подкатегорию хорошо, но продукт не правильный

кто-нибудь может мне помочь?

Вернуться на верх