用django-filters设置初始值?

使用
django-filters应用程序时,如何在过滤器中设置字段的初始值?

通常使用Django中的标准表单,例如简单的选择列表形式:

class MyForm(forms.Form):
    OPTIONS=(('APP','Apple'),('BAN','Banana')) 
    country = forms.ChoiceField(widget=forms.Select(),
                                         choices=OPTIONS, initial='BAN')

初始化香蕉的表格条目.但是,在我的filter.py中,如果我有类似的东西:

class MyFilter(django_filters.FilterSet):
    OPTIONS=(('APP','Apple'),('BAN','Banana')) 
    myfield = django_filters.ChoiceFilter(
             widget=django_filters.widgets.forms.Select(),choices=OPTIONS)
    .
    .

我在哪里放置初始=’BAN’来获取下拉列表中最初选择的元素等?
我尝试了ChoiceFilter参数和Select()参数无济于事.

我认为过滤器的想法是非常密切地反映了Forms的行为,只是显然有过滤的额外好处,所以我很惊讶初始化(在我看来)直观的地方不起作用.

最佳答案 这适合我.如果请求中未提供任何数据,则设置默认值:

data = request.GET.copy()
if len(data) == 0:
    data['field'] = initial_value
filters = MyFilterSet(data)
点赞