Jør*_*gen 2 django jquery django-forms multi-select
我有一个应用程序,我有很多实例将单个html选择的用户选择传递给表单字段没有问题,但我在多选案例中努力做同样的事情.似乎该JQuery.val()函数正在创建一个正确的数据数组,但我在服务器上的formfield显示一个空字符串.我继承了这个应用程序,并且在某种程度上是一个菜鸟.
相关的javascript函数是
$('.exemptionfield').change(function() {
var exemptionfield = $(this)
$.ajax({
url: '/form/ASubstanceExemption',
type: 'POST',
data: {
sclId: $('#sclId').val(),
substance: exemptionfield.attr('id'),
exemption: exemptionfield.val()
}
})
})
Run Code Online (Sandbox Code Playgroud)
表格看起来像
class ASubstanceExemption(forms.Form):
buttonTitle = 'submit'
title = 'not used'
sclId = forms.IntegerField()
substance = forms.CharField()
exemption = forms.MultipleChoiceField(required=False,
choices=kExemptions)
def handle(self, *args, **kwargs):
sclId = self.cleaned_data['sclId']
substance = self.cleaned_data['substance']
exemption = self.cleaned_data['exemption']
print exemption
etc...
Run Code Online (Sandbox Code Playgroud)
HTML选择看起来像
<select multiple size="5" class="exemptionfield" id="Lead/lead compounds">
<option value="1(a)">
1(a)
</option>
<option value="1(b)">
1(b)
</option>
<option value="1(c)">
1(c)
</option>
<option value="1(d)">
1(d)
</option>
etc....
Run Code Online (Sandbox Code Playgroud)
如果我有一个选择html下拉菜单和一个选项form.ChoiceField,选定的值(类型exemptionfield)将传递给我的表单中的免除变量.从来没有遇到过问题.如果我切换到form.MultipleChoiceField并选择要传递的单个变量exemptionfield.val()[0],例如,这也可以正常工作.它将以(示例)的格式出现[u'1(b)'].但是当我删除[0]并且只使用时exemptionfield.val(),我似乎只在表单中收到一个空数组.我的打印操作仅显示[]结果.但看使用警报功能由JavaScript发送的值,它告诉我它正在发送1(b),1(c),1(d).
我在这里出错的任何提示?谢谢.
我认为你遇到的问题我刚刚解决了.您只需要更改jQuery中的设置(根据此讨论的新版本,并在jQuery文档中引用),因此它不会将方括号附加到POST数据中发送的序列化变量.
当我发送my-form-field = $('#my-multi-select').val()时.post(),它发送它为:
my-form-field[] = 4
my-form-field[] = 7
Run Code Online (Sandbox Code Playgroud)
尝试将其引用为form.cleaned_data ['my-form-field []']而不是form.cleaned_data ['my-form-field']不起作用,Django只查找没有括号的表单字段名称.
无论如何,添加这一行:
jQuery.ajaxSettings.traditional = true;
Run Code Online (Sandbox Code Playgroud)
...将使其发送数据
my-form-field = 4
my-form-field = 7
Run Code Online (Sandbox Code Playgroud)
根据我在上面讨论的讨论中收集的内容,默认行为在PHP和Rails中效果更好,但是导致Django出现此问题.也许Django应该适应?
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |