Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据特定类别检索品牌?_Python_Html_Django - Fatal编程技术网

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})
这是模板


  • {%类别中的c为%} {%endfor%}
{products%中产品的%s}

{product.price}

{%endfor%}
这里是网址。 从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
,使用slug
my category
,只需
category
就可以获得
Product
s。您还可以提供相关的URL吗?你可能需要为它创建两个单独的URL,我不确定你是否已经创建了。你好,埃尔丁,我按要求添加了相关的URL。