使用SimpleListFilter的通用过滤器

时间:2015-06-01 18:19:16

标签: python django-admin django-admin-filters

我正在自定义一个过滤器,但会保留它的通用性,但只能用于一个案例。

我必须创建多个过滤器,但只想使用一个类。我可以创建一个类用于不同类型的过滤器吗?

class MyModelCustomizeFilter(admin.SimpleListFilter):

title = u'' #It can be parameterized?
parameter_name = u'' #It can be parameterized?

def lookups(self, request, model_admin):
    return (
        ('1', ('Activated')), #It can be parameterized?
        ('0', ('Negate')),
        ('all', ('All')),
    )

def choices(self, cl):
    for lookup, title in self.lookup_choices:
        yield {
            'selected': self.value() == lookup,
            'query_string': cl.get_query_string({
                self.parameter_name: lookup,
            }, []),
            'display': title,
        }

def queryset(self, request, queryset):
    if self.value() in ('0', '1'):
        return queryset.filter(status=self.value())
    elif self.value() == None:
        return queryset.filter(status=None)

我可以参数化 parameter_name 标题值查找

0 个答案:

没有答案