, когда я пытаюсь получить объект с указанным * slug *, это выдает мне ошибку 404 страницы, однако я жестко закодировал имя slug, и это сработало, и я напечатал поле slug отдельно, и это было то, которое Я уже проверял раньше. это часть представления:
def show_category(request, hierarchy=None):
category_slug = hierarchy.split('/')
category_queryset = list(Category.objects.all())
all_slugs = [x.slug for x in category_queryset]
print(all_slugs)
print(get_object_or_404(Product, title='benz'))
parent = None
for slug in category_slug:
if slug in all_slugs:
parent = get_object_or_404(Category, slug=slug, parent=parent)
else:
# these 3 lines bellow:
print(slug)
print(get_object_or_404(Product, slug='benz'))
instance = get_object_or_404(Product, slug=slug)
breadcrumbs_link = instance.get_cat_list()
breadcrumbs_name = instance.get_cat_names()
category_name = [' '.join(i.split('/')[-1].split('-'))
for i in breadcrumbs_name]
breadcrumbs = zip(breadcrumbs_link, category_name)
return render(request, "products/product_detail.html", {'instance': instance, 'breadcrumbs': breadcrumbs})
return render(request, "products/products_list.html", {'product_set': parent.product_set.all(), 'sub_categories': parent.children.all()})
и это модели продуктов и категорий:
class Category(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(allow_unicode=True)
parent = models.ForeignKey(
'self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)
class Meta:
unique_together = ('slug', 'parent',)
verbose_name_plural = "categories"
@property
def get_products(self):
return Product.objects.filter(category__name=self.name)
class Product(models.Model):
title = models.CharField(max_length=200)
description = models.TextField(verbose_name='desription')
slug = models.SlugField()
image = models.ImageField(upload_to='product_pics', default='default.jpg')
category = models.ForeignKey(
'Category', null=True, blank=True, on_delete=models.CASCADE)
def get_absolute_url(self):
return reverse('product-detail', kwargs={'slug': self.slug})
def get_cat_list(self):
k = self.category
breadcrumb = ["dummy"]
while k is not None:
breadcrumb.append(k.slug)
k = k.parent
for i in range(len(breadcrumb)-1):
breadcrumb[i] = '/'.join(breadcrumb[-1:i-1:-1])
return breadcrumb[-1:0:-1]
def get_cat_names(self):
k = self.category
breadcrumb = ["dummy"]
while k is not None:
breadcrumb.append(k.name)
k = k.parent
for i in range(len(breadcrumb)-1):
breadcrumb[i] = '/'.join(breadcrumb[-1:i-1:-1])
return breadcrumb[-1:0:-1]