Django. Не могу понять ошибку по выводу продуктов из каталога
Делаю каталог, не могу понять почему не выводятся продукты по категориям каталога, выдает ошибку 404. Разделы в каталоге работают как надо. Вот код: Заранее благодарен за любую подсказку! models.py
class Catalog(models.Model):
sections = models.CharField(max_length=150, db_index=True, verbose_name="Название")
img = models.ImageField(upload_to='img/catalog/')
slug = models.SlugField(max_length=150, db_index=True, unique=True, null=True)
class Meta:
ordering = ('sections',)
index_together = (('id', 'slug'),)
verbose_name = 'Главная страница каталога'
verbose_name_plural = 'Главная страница каталога'
def __str__(self):
return self.sections
def get_absolute_url(self):
return reverse('catalog', kwargs={"slug": self.slug})
class Category(models.Model):
catalog = models.ForeignKey(Catalog, related_name='catalog', on_delete=models.CASCADE,
verbose_name='Выбрать каталог'
)
name = models.CharField(max_length=150, db_index=True, verbose_name="Название")
img = models.ImageField(upload_to='img/catalog/')
slug = models.SlugField(max_length=200, db_index=True, unique=True, null=True)
class Meta:
ordering = ('name',)
index_together = (('id', 'slug'),)
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('catalog-detail', kwargs={"slug": self.slug})
class Product(models.Model):
category = models.ForeignKey(Category, related_name='category', on_delete=models.CASCADE,
verbose_name='Выбрать категорию'
)
name = models.CharField(max_length=255, db_index=True,unique=True, null=True, verbose_name="Название")
text = models.TextField('Текст')
url = models.CharField(max_length=255, db_index=True, verbose_name="Ссылка на сайт")
pdf = models.FileField(upload_to='pdf/')
slug = models.SlugField(max_length=200, db_index=True, unique=True, null=True)
class Meta:
ordering = ('name',)
index_together = (('id', 'slug'),)
verbose_name = 'Продукт'
verbose_name_plural = 'Продукты'
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('product-detail', kwargs={"slug": self.slug})
class Gallery(models.Model):
image = models.ImageField(upload_to='img/catalog/')
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='images')
class Meta:
verbose_name = 'Галерея'
verbose_name_plural = 'Галереи'
urls.py
urlpatterns = [
path('', views.catalog, name='catalog'),
path('<slug>/', views.CatalogDetailViews.as_view(), name='catalog-detail'),
path('product/<slug>', views.ProductDetailViews.as_view(), name='product-detail')
]
views.py
class CatalogDetailViews(ListView):
model = Category
template_name = 'catalog/catalog-detail.html'
context_object_name = 'category'
def get_queryset(self):
category = get_object_or_404(Catalog, slug__iexact=self.kwargs.get('slug'))
queryset = category.catalog.all()
return queryset
class ProductDetailViews(DetailView):
model = Product
template_name = 'catalog/product-detail.html'
context_object_name = 'product'
def get_queryset(self):
product = get_object_or_404(Category, slug__iexact=self.kwargs.get('slug'))
queryset = product.category.all()
return queryset