【发布时间】:2016-02-15 20:58:49
【问题描述】:
默认情况下,django 管理员的list_filter 提供模型选择中可用的所有过滤器。但除了那些我想要一个过滤器之外,我们可以说它是“无”过滤器。
class Mymodel:
char choice field (choices=(('1', 'txt1', '2', 'txt2')), null=True)
class MymodelAdmin(admin.ModelAdmin):
...
list_filter = [..., choice_field, ...]
...
这将在管理面板中设置三个过滤器(右侧过滤器)All, 'txt1', 'txt2'。正确的?
如果没有从选项中分配值,我想要一个过滤器“无”。
到目前为止我尝试了什么..
class ChoiceFieldFilter(admin.filters.ChoicesFieldListFilter):
def __init__(self, *args, **kwargs):
super(ChoiceFieldFilter, self).__init__(*args, **kwargs)
self.lookup_val = [('', 'None')]
def queryset(self, request, queryset):
print self.lookup_val
print self.field.flatchoices
if self.lookup_val == '':
return queryset.filter(choice_field='')
else:
return queryset.filter(choice_field=self.lookup_val)
def choices(self, cl):
pass
然后在管理类中
list_filter = [..., ('choice_field', ChoiceFieldFilter), ...]
但它不起作用,我无法在 django admin 中看到 None 过滤器
【问题讨论】:
标签: python django django-admin