2016-01-06 50 views
1

我在我的表单类中定义了一个名为states的Django ChoiceField。Django ChoiceField - 如何显示当前选定的值?

class StateForm(forms.Form): 

    def __init__(self, *args, **kwargs): 
     super(StateForm, self).__init__(*args, **kwargs) 
     self.fields['states'] = forms.ChoiceField(widget=forms.Select, 
           choices=OPTIONS_STATE) 
     self.initial['states'] = 'Any' 

我还设置了初始值“任意”,因为我想在下拉说“任何”默认。

在我的views.pyget_context_data()函数中,我将它添加到发送到html的上下文中。

 context['state_form'] = StateForm() 

在我的HTML,我可以使用Django的特殊语言

{{ state_form.states }} 

到目前为止好渲染的下拉列表。我在我的页面看到一个下拉菜单,默认值是'Any'。我可以点击它来选择其他值,在这一点上我的JavaScript代码会发送一个基于我的形式的HTTP请求。它会用筛选的数据重新加载页面。我能够完成所有这些。

问题是,一旦页面重新加载,下拉菜单仍然会显示'Any'。我希望下拉菜单显示先前选择的数据。但我不知道如何。

+0

由于您将所选值传递回您的视图,为什么不执行'context ['state_form'] = StateForm(initial = {'states':dropdown_value})''。 –

回答

0

当您重定向到一个新的URL,通过选择状态为GET参数的URL。例如:

url = 'http://example.com/some-page/?state=Texas' 

那么接下来的页面上,用JS读取state参数,并相应设置下拉列表的价值。或者你可以在下一个URL的视图中传递state作为上下文变量。