2013-03-11 100 views
0

是否可以在SimpleListFilter中创建一个重定向。 我尝试用户django管理过滤器并重定向到网址。 有没有办法做到这一点?Django管理员在SimpleListFilter中重定向

class ListFilter(SimpleListFilter): 
    title = "test" 

    def lookup(self, request, model_admin): 
     return (
      ('1t', 'First test'), 
     ) 

    def queryset(self, request, queryset): 
     if self.value() == '1t': 
      redirect('/admin/test/3test/') 

class TestAdmin(admin.ModelAdmin): 
    list_filter(ListFilter,) 

回答

1

简短的回答:否。queryset方法应返回一个过滤的queryset,而不是一个HTTP响应。

如果你真的想添加的过滤器侧边栏的链接,你可以破解它是这样的:

class ListFilter(SimpleListFilter): 
    title = "test" 
    template = 'admin_sidebar_links.html' 

    def lookups(self, request, model_admin): 
     return (,) 

    def queryset(self, request, queryset): 
     return queryset 

然后沿着建立在你的模板被称为“admin_sidebar_links.html”目录中的HTML文件,其中包含的东西这些行:

<h3>Filter Title</h3> 
<ul> 
    <li><a href="/admin/test/3test/">Link</a></li> 
</ul> 
+0

是否有可能创建一个,以便您可以更改链接? – DarkAnthey 2013-03-12 11:45:30

+0

我找到了选择(self,cl)方法。它解决了我所有的问题。感谢帮助。 – DarkAnthey 2013-03-12 16:09:29