get_queryset中的Django 2.0 url参数

问题描述 投票:2回答:1

我想根据网址中的类别ID过滤子类别

对于恒定值,它可以毫无问题地工作

return Subcategory.objects.filter(category = 1)

views.朋友

class SubcategoriesListView(ListView):
    model = Subcategory
    template_name = 'app/categories/index.html'
    def get_queryset(self):
        return Subcategory.objects.filter(category = category_id)

URLs.朋友

path('categories/<int:category_id>/', app.views.SubcategoriesListView.as_view(), name='subcategories'),

models.朋友

class Subcategory(models.Model):
   title = models.CharField(max_length=30)
   category = models.ForeignKey(Category, on_delete=models.CASCADE)

追溯

未定义/ categories / 1 / name“category_id”中的NameError

get_queryset中的views.py返回Subcategory.objects.filter(category = category_id)

python django django-views
1个回答
6
投票

您可以分别使用self.args(元组)和self.kwargs(字典)在基于类的视图中获取URI位置和命名参数。

在这里,您将category_id定义为命名参数,因此您可以使用self.kwargs['category_id']获取其对应的值:

class SubcategoriesListView(ListView):
    model = Subcategory
    template_name = 'app/categories/index.html'
    def get_queryset(self):
        return Subcategory.objects.filter(category_id=self.kwargs['category_id'])

由于id是一个整数,因此你在category_id上过滤,而不是在category上过滤。

© www.soinside.com 2019 - 2024. All rights reserved.