0

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

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,)
4

1 回答 1

1

Short answer: No. The queryset method should return a filtered queryset, not a http response.

If you really want to add a link in the filter sidebar, you can hack it like this:

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

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

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

Then create an html file in your templates directory called 'admin_sidebar_links.html', containing something along these lines:

<h3>Filter Title</h3>
<ul>
    <li><a href="/admin/test/3test/">Link</a></li>
</ul>
于 2013-03-11T20:04:39.720 回答