get_object_or_404 не работает должным образом в django - PullRequest
0 голосов
/ 08 марта 2020

, когда я пытаюсь получить объект с указанным * 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...