默认情况下 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), ...]
但它不起作用,我看不到None
在 Django 管理中过滤