2016-01-06 53 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作爲上下文變量。