Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

Python 如何创建查询集以显示链接到某个类别的产品,该类别由每个类别段塞显示?

Python 如何创建查询集以显示链接到某个类别的产品,该类别由每个类别段塞显示?,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有一个产品模型和一个产品类别模型。产品通过类别属性链接到productcategory。我想创建一个查询,在显示特定类别的网页时,只显示类别中的产品 按照当前设置视图的方式,我得到一个属性错误,表示视图没有slug属性 型号: class ProductCategory(models.Model): title = models.CharField(max_length=200) slug = models.SlugField() parent = models.For

我有一个产品模型和一个产品类别模型。产品通过类别属性链接到productcategory。我想创建一个查询,在显示特定类别的网页时,只显示类别中的产品

按照当前设置视图的方式,我得到一个属性错误,表示视图没有slug属性

型号:

class ProductCategory(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField()
    parent = models.ForeignKey('self', blank=True, null=True,
                related_name='children', on_delete=models.PROTECT)

class Product(models.Model):
    title       = models.CharField(max_length=100)
    category    = models.ForeignKey(ProductCategory, related_name='ProductsCategory', null=True, blank=True,
                    on_delete=models.CASCADE)
    slug        = models.SlugField(blank=True)
    description = models.TextField()
    price       = models.DecimalField(decimal_places=2, max_digits=6)
    image       = models.ImageField(upload_to='products/', null=True, blank=True)
观点:

class ProductListView(ListView):
    look_up = 'slug'
    template_name = 'products/products.html'

    def get_queryset(self, *args, **kwargs):
        category = ProductCategory.objects.get(self.slug)
        products = Product.filter(category=category)
        return products
网址:

urlpatterns=[
路径(“”,CategoryView.as_view(),name='shop'),
路径(“/”,ProductListView.as_view(),name='products'),
路径('/',ProductDetailView.as_view(),name='detail'),
]

试试下面的方法,这将有助于更多地查看您的URL,但这会让您更接近

class ProductListView(ListView):
    template_name = 'products/products.html'

    def get_queryset(self, *args, **kwargs):
        category = ProductCategory.objects.get(slug=self.kwargs.get('product_category'))
        products = category.ProductsCategory.all()
        return products

除了应该是
Product.objects.filter
之外,这个代码有什么问题?你的问题是什么?我试过Product.objects.filter,但也不起作用。当我添加这段代码,现在尝试转到某个类别的某个页面时,Django给了我一个属性错误,说slug不是ProductListView的属性。您希望
self.slug
的值是多少<代码>自我在这种情况下不是模型实例。将尝试此。。。刚刚添加了我的URL,如果这可以帮助更多。感谢you@leonking93我已经更新了答案,让我知道这是否有帮助。这有效!!非常感谢。我在学校,正在积极学习python和django框架。@leonking93很高兴我能帮上忙:)
class ProductListView(ListView):
    template_name = 'products/products.html'

    def get_queryset(self, *args, **kwargs):
        category = ProductCategory.objects.get(slug=self.kwargs.get('product_category'))
        products = category.ProductsCategory.all()
        return products