Здравствуйте, пишу сайт, как не пробовал не получается сделать фильтрацию. Есть карточки с категориями(пример на фото), когда нажимаешь на определенную(карточку с категорией) нужно чтобы отображались товары с этой категорией, а остальные нет. У товара есть ForeForeignKey на модель с категориями. Заранее спасибо!
models.py
from django.db import models
from django.shortcuts import reverse
class Categories(models.Model):
category = models.CharField(max_length=250)
image = models.ImageField(null=True)
sale = models.CharField(max_length=250, null=True, blank=True)
slug = models.SlugField(max_length=250, unique=True)
def __str__(self):
return self.category
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
class Country(models.Model):
name = models.CharField('Страна',max_length=250)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Страна'
verbose_name_plural = 'Страны'
class Product(models.Model):
STATUS_CHOICES = (
('нет в наличии', 'нет в наличии'),
('в наличии', 'в наличии'),
)
category = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True)
name = models.CharField('Название',max_length=250)
model = models.CharField('Модель',max_length=250, null=True)
image = models.ImageField(null=True)
availability = models.CharField('Наличие',max_length=30, choices=STATUS_CHOICES, default='нет в наличии')
description = models.TextField('Описание')
country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True)
warranty = models.CharField('Гарантия', max_length=250, null=True)
price = models.IntegerField('Цена')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Продукт'
verbose_name_plural = 'Продукты'
views.py
from django.shortcuts import render
from .models import Categories, Product
def index(request):
category = Categories.objects.all()
return render(request, 'shop/base.html',{'category': category})
def category_detail(request, slug):
cat = Categories.objects.get(slug__iexact=slug)
products = Product.objects.filter()
return render(request, 'shop/category_detail.html', {'cat':cat, 'products':products})
def product_detail(request, id):
product = Product.objects.get(id=id)
return render(request, 'shop/product_detail.html', {'product':product})
urls.py
from django.urls import path
from .views import index, category_detail, product_detail
urlpatterns = [
path('', index, name='index'),
path('<str:slug>/', category_detail, name='category_detail'),
path('product/<int:id>/', product_detail, name='product_detail')
]