Предполагая, что слаг относится к категории, вы можете сделать это:
from django.shortcuts import get_object_or_404
class ProductCategoryListView(ListView):
template_name = 'products/product_list.html'
def get_queryset(request, *args, **kwargs):
category = get_object_or_404(Category, slug=self.slug)
products = Product.objects.filter(category=category)
return products
В вашей модели Product
вы можете установить related_name
в поле категории, чтобы было легче получить доступ к продуктам изкатегория:
class Product(models.Model):
title = models.CharField(max_length=100)
category = models.ForeignKey(
ProductCategory, null=True, blank=True, related_name="products", on_delete=models.CASCADE
)
...
Теперь вы можете сделать это:
from django.shortcuts import get_object_or_404
class ProductCategoryListView(ListView):
template_name = 'products/product_list.html'
def get_queryset(request, *args, **kwargs):
category = get_object_or_404(Category, slug=self.slug)
return category.products.all()