Python 如何根据特定类别检索品牌?
如何在视图或模板中检索/筛选与特定类别相关的品牌?我可以根据类别检索产品,但是,我希望能够检索与该类别相关的品牌?我是否需要单独为品牌创建一个模型 这是我的产品和分类模型 类别模型Python 如何根据特定类别检索品牌?,python,html,django,Python,Html,Django,如何在视图或模板中检索/筛选与特定类别相关的品牌?我可以根据类别检索产品,但是,我希望能够检索与该类别相关的品牌?我是否需要单独为品牌创建一个模型 这是我的产品和分类模型 类别模型 class Category(models.Model): name = models.CharField(max_length=255, db_index=True) slug = models.SlugField(max_length=255, unique=True) class Me
class Category(models.Model):
name = models.CharField(max_length=255, db_index=True)
slug = models.SlugField(max_length=255, unique=True)
class Meta:
ordering = ('name',)
verbose_name = ('category')
verbose_name_plural = ('categories')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('shop:product_list_by_category', args=[self.slug])
产品模型
class Product(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='products')
brand = models.ForeignKey(Brand, on_delete=models.CASCADE, related_name='brands')
retailer = models.ForeignKey(Retailer, on_delete=models.CASCADE, related_name='suppliers')
title = models.CharField(max_length=255, db_index=True)
slug = models.SlugField(max_length=255, db_index=True)
url = models.URLField()
description = models.TextField()
color = models.CharField(max_length=255, blank=True)
material = models.CharField(max_length=255, blank=True)
weight = models.CharField(max_length=255, blank=True)
dimensions = models.CharField(max_length=255, blank=True)
available = models.BooleanField(default=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
cost_price = models.DecimalField(max_digits=10, decimal_places=2)
image_1 = models.ImageField(upload_to='product_images/')
image_2 = models.ImageField(upload_to='product_images/')
image_3 = models.ImageField(upload_to='product_images/')
created = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
class Meta:
ordering = ('?',)
verbose_name = ('product')
verbose_name_plural = ('products')
index_together = (('id', 'slug'),)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('shop:product_detail', args=[self.id, self.slug])
这是views.py
from django.shortcuts import render, get_object_or_404
from .models import Product, Category, Brand
# Create your views here.
def product_list(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
if category_slug:
category = get_object_or_404(Category, slug=category_slug)
products = products.filter(category=category)
return render(request,'product_list.html',
{'category': category,
'categories': categories,
'products': products})
def product_detail(request, id, slug):
product = get_object_or_404(Product,
id=id, slug=slug, available=True)
return render(request, 'product_detail.html',
{'product': product})
这是模板
{product.price}
{%endfor%}
{products%中产品的%s}
这里是网址。
从django.url导入路径
从…起导入视图
应用程序名称='商店'
URL模式=[
路径('products/',views.product_list,name='products'),
路径('
/”,views.product_list,name='product_list_by_category'),
路径('
/
/,views.product_detail,name='product_detail'),
]我想你文章中的缩进被打断了。嗨,哪一部分?我已经看过了,看起来不错。谢谢,我觉得很好。根据
类别的slug
,您将获得产品。因此,您(例如)点击/products/my category
,使用slugmy category
,只需category
就可以获得Product
s。您还可以提供相关的URL吗?你可能需要为它创建两个单独的URL,我不确定你是否已经创建了。你好,埃尔丁,我按要求添加了相关的URL。