Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2022, 11:32   #1
l3o
Новичок
Джуниор
 
Регистрация: 10.11.2022
Сообщений: 2
По умолчанию 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

Последний раз редактировалось l3o; 10.11.2022 в 11:34.
l3o вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
django web developer Python 2 18.06.2022 08:00
пути в django 2 dbalor Python 7 02.09.2018 16:03
Django от Jino Ghost of Night WordPress и другие CMS 2 26.07.2012 11:17
django-php: PHP в шаблонах Django rei_desu PHP 0 07.08.2011 05:16