【发布时间】:2016-04-09 23:30:20
【问题描述】:
我在表单类中定义了一个名为 states 的 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'
我还将初始值设置为“Any”,因为我希望下拉菜单默认显示“Any”。
在我的views.py、get_context_data() 函数中,我将其添加到发送到 html 的上下文中。
context['state_form'] = StateForm()
在我的 html 中,我可以使用 Django 的特殊语言呈现下拉菜单
{{ state_form.states }}
到目前为止一切顺利。我在我的页面中看到一个下拉菜单,默认值为“任何”。我可以单击它来选择其他值,此时我的 javascript 代码将根据我的表单发送 HTTP 请求。它将使用过滤后的数据重新加载页面。我能够完成所有这些。
问题是,一旦页面重新加载,下拉菜单仍然显示“任何”。我希望下拉列表显示先前选择的数据。但我不确定如何。
【问题讨论】:
-
既然你把选择的值传回你的视图,你为什么不做
context['state_form'] = StateForm(initial={'states': dropdown_value})。
标签: javascript django forms