我使用了以下django-filter(https://github.com/alex/django-filter/)过滤器:
class ApplicationFilter(django_filters.FilterSet): status = django_filters.ChoiceFilter(choices=STATUS2,)
状态包含以下元组列表:
STATUS_CHOICES = ( ( '', u'All'), ( 'NEW', u'New'), ( 'SUBMIT', u'Submit'), ( 'CANCEL', u'Cancel'), )
现在,我想为该过滤器设置一个不同于空过滤器(All)的初始值。所以我尝试了以下内容,所有没有成功:
我。在字段中添加初始参数:
status = django_filters.ChoiceFilter(choices=STATUS2, initial = 'NEW' )
或数组status = django_filters.ChoiceFilter(choices=STATUS2, initial = ['NEW'] )
。使用默认初始值呈现的表单。
II。修改表单的__init__
:
def __init__(self, *args, **kwargs): super(ApplicationFilter, self).__init__(*args, **kwargs) self.form.initial['status']='NEW' self.form.fields['status'].initial='NEW'- 再次使用默认初始值(全部)呈现的表单...还尝试将值设置为
['NEW']
- 再次没有运气。
有谁知道应如何处理?我正在使用最新的(来自github)版本的django-filter。
TIA
答案 0 :(得分:0)
试试这个:
def __init__(self, *args, **kwargs):
super(ApplicationFilter, self).init(*args, **kwargs)
self.initial['status'] = 'NEW'
答案 1 :(得分:0)
这个答案可能适合您: Set initial value with django-filters?
在我看来,我这样做:
get_query = request.GET.copy()
if 'status' not in get_query:
get_query['status'] = 'final'
filter_set = MatterFilterSet(get_query)