我想根据 URL 中的类别 ID 过滤子类别
对于常量值,它可以正常工作
return Subcategory.objects.filter(category = 1)
View .py
class SubcategoriesListView(ListView):
model = Subcategory
template_name = 'app/categories/index.html'
def get_queryset(self):
return Subcategory.objects.filter(category = category_id)
网址.py
path('categories/<int:category_id>/', app.views.SubcategoriesListView.as_view(), name='subcategories'),
模型.py
class Subcategory(models.Model):
title = models.CharField(max_length=30)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
回溯
NameError at /categories/1/
name 'category_id' is not defined
views.py in get_queryset
return Subcategory.objects.filter(category = category_id)
最佳答案
您可以分别使用 self.args
(元组)和 self.kwargs
(字典)在基于类的 View 中获取 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(<b>category_id</b>=<b>self.kwargs['category_id']</b>)
由于 id
是一个整数,因此您可以根据 category_id
而不是 category
进行过滤。
关于python - get_queryset 中的 Django 2.0 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755692/