首页 文章

初始值对于django-filters上的ChoiceField不起作用

提问于
浏览
2

我有以下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'),
)

现在,我想为该过滤器设置一个不同于空过滤器的初始值(全部) . 所以我尝试了以下几件事,但都没有成功:

一世 . 将初始参数添加到字段: 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

2 回答

  • 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)
    
  • 0

    试试这个:

    def __init__(self, *args, **kwargs):
        super(ApplicationFilter, self).init(*args, **kwargs)
        self.initial['status'] = 'NEW'
    

相关问题