Django 1.3将参数传递给url.py中基于类的通用列表视图的过滤器

时间:2011-05-27 06:45:13

标签: regex django url view tags

这是我在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

基本上我对基于类的通用视图感到困惑。有什么想法吗?

1 个答案:

答案 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())