我正在尝试收集我的表单数据(3 ModelChoiceFields)并在我的 ajax.py 中验证它们以将数据用于数据库操作。但是当我点击发布时,数据似乎正确发送如下..
argv {"form":"Branch=Maint&Env=Staging&Disc=Astronomy"}
Source
argv=%7B%22form%22%3A%22Branch%3DMaint%26Env%3DStaging%26Disc%3DAstronomy%22%7D
但是表单没有得到验证,并且在检查 Firebug 时,我在所有三个字段中都收到以下错误
选择一个有效的选项。该选择不是可用的选择之一。
我的模板(它包含作为脚本包含的必要 jquery 和 dajax 文件)
<form action="" method="post" id = "select_form">
<div style = "color :white" class="field_wrapper">
{{ form.as_p }}
</div>
<input type="button" value="Display Table" onclick="send_form();"/>
</form>
<script type="text/javascript">
function send_form(){
Dajaxice.modmap.dispTable(Dajax.process,{'form':$('#select_form').serialize(true)});
}
</script>
我的 ajax.py
@dajaxice_register
def dispTable(request, form):
dajax = Dajax()
form = BedSelectForm(deserialize_form(form))
if form.is_valid():
dajax.remove_css_class('#select_form input', 'error')
dajax.alert("Form is_valid(), your username is: %s" %form.cleaned_data.get('Branch'))
else:
dajax.remove_css_class('#select_form input', 'error')
for error in form.errors:
dajax.add_css_class('#id_%s' % error, 'error')
dajax.alert("Form is_notvalid(), your error is: %s" % form.errors)
return dajax.json()
我的表格
class BedSelectForm(forms.Form):
Branch = forms.ModelChoiceField(
label = u'Branch',
queryset = Result.objects.values_list('branch', flat =True).distinct(),
empty_label = 'Not Specified',
widget = forms.Select(attrs = {'onchange' : "Dajaxice.modmap.updatecomboE(Dajax.process, {'optionB':this.value})"})
)
Env = forms.ModelChoiceField(
label = u'Environment',
queryset = Result.objects.values_list('environment', flat =True).distinct(),
empty_label = 'Not Specified',
widget = forms.Select(attrs = {'onchange' : "Dajaxice.modmap.updatecomboD(Dajax.process, {'optionE':this.value})"})
)
Disc = forms.ModelChoiceField(
label = u'Discipline',
queryset = Result.objects.values_list('discipline', flat =True).distinct(),
empty_label = 'Not Specified'
)
我的其他 dajax 函数工作正常。只是这个总是进入 else 块并打印错误,我不知道为什么当数据以正确的格式传递给它时。
我指的是这个例子http://www.dajaxproject.com/fullform/并试图模仿几乎类似的行为。