2013-03-11 96 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