get_queryset中的Django 2.0 url参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了get_queryset中的Django 2.0 url参数相关的知识,希望对你有一定的参考价值。
我想根据网址中的类别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)
答案
您可以分别使用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
上过滤。
以上是关于get_queryset中的Django 2.0 url参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中覆盖“get_queryset()”
Django 自定义管理器 get_queryset() 不起作用
使用 get_queryset 的 Django ListView 分页
Django get_object ,get_queryset方法