Я хочу показать товары по категориям, используя функцию . (.filter)
Я новичок в Django, я хочу показать товары по категориям, используя .feature (.filter), Я пытался много раз, но у меня не получилось, надеюсь, кто-нибудь сможет мне помочь.
Пожалуйста, напишите код с объяснением
МОДЕЛИ:
from django.db import models
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=200)
slug = models.CharField(max_length=200)
def __str__(self):
return self.name
class Product(models.Model):
Category = models.ForeignKey(Category, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=False, blank=False)
slug = models.CharField(max_length=200, null=False, blank=False)
description = models.TextField(max_length=350, null=False, blank=False)
image = models.ImageField( null=False, blank=False)
quantity = models.IntegerField(null=False, blank=False)
def __str__(self):
return self.name
УРЛЫ:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name="home"),
path('f/<str:slug>', views.fd, name="fd"),
path('category', views.category, name="category"),
path('category/<str:slug>', views.categoryslug, name="categoryslug"),
]
ПРОСМОТРОВ:
def home(request):
context = {
'Pr': Product.objects.all(),
}
return render(request, 'pages/home.html', context)
def fd(request, slug):
context = {
'gfd' : Product.objects.get(slug=slug),
}
return render(request, 'pages/product.html', context)
def category(request):
context = {
'Categorys': Category.objects.all(),
}
return render(request, 'pages/category.html', context)
Пожалуйста, напишите код с объяснением
мне нужно показать товар по категориям
pages/category.html
{% for cat in Categorys %}
{{ cat.name }}
{% for obj in cat.product_set.all %}
{{ obj.name }}
{% endfor %}
{% endfor %}
Если вы имеете в виду, что вам нужна реализация для categoryslug
, предположительно, страница для показа категории и ее продуктов, что-то вроде
def categoryslug(request, slug):
category = Category.objects.get(slug=slug)
context = {
'category': category,
'products': category.product_set.all(),
}
return render(request, 'pages/products-in-category.html', context)
было бы хорошим "голым" началом.