Django管理员在SimpleListFilter中重定向

时间:2013-03-11 14:12:45

标签: python django django-admin

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

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 个答案:

答案 0 :(得分:1)

简答:不。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>