这是我在url.py中的代码:
(r'^tag/(?P<tag>\w+)/$',
ListView.as_view(
model=List,
context_object_name='some_list',
queryset=List.objects.filter(tag__name__in=[tag_name]),
template_name='some_list.html'))
我想将(?P<tag>\w+)
传递给“tag_name
”过滤器,但我不知道该怎么做。
另外我如何传递多个标签?像这样:
http://www.mysite.com/tag/tag1+tag2+tag3
url.py应获取“tag1+tag2+tag3
”,将其拆分为“tag1
”,“tag2
”和“tag3
”,然后将其放入“{ {1}}“:
tag__name__in
基本上我对基于类的通用视图感到困惑。有什么想法吗?
答案 0 :(得分:18)
您可以覆盖视图的get_queryset
方法,并使用您的结果构建一个查询集,例如
from django.views.generic.list import ListView
class MyList(ListView):
def get_queryset(self):
tag_list = self.kwargs['tags'].split('+')
return List.objects.filter(tag__name__in=tag_list)
# urls.py
...
url(r'tag/(?<tags>[\w\+]+)/', MyList.as_view())