使用
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)