python - get_queryset 中的 Django 2.0 url 参数

标签 python django url django-views

我想根据 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/

相关文章:

django - 我在使用 Django 应用程序的 heroku 中收到错误 R14(超出内存配额)

url - Firebase 存储共享下载 url 存在安全风险?

c++ - InternetCrackUrl 没有正确返回 lpszHostName

python - 为什么下面的代码会产生缩进错误?

python - 如何覆盖 createView 以保存多个数据条目

python - 从标签条目中删除索引

php -/#!/在 URL 中是什么意思?

python - Python中列表所有元素的频率

python - Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误

python - AppRegistryNotReady : Apps aren't loaded yet. Django