我的Django应用程序中的表格中有一个复选框列表。用户选择其中一些然后单击操作按钮。然后会弹出一个小弹出模式窗体,在这里填写与所选项目相关的信息,他们还可以在弹出窗口中上传文件。我需要发送选中的复选框' id和Django模式中的表单字段通过ajax
我已将模态包装在表单标签中并且一切正常。我正在努力将所选ID列表发送给Django。当用户选择id 31和32时,它将其发送为' 31,32'作为一个字符串,Django无法对其进行解码。我确定这是一个快速修复,但我的javascript知识有限。
以下是我的代码:
HTML:
spark
使用Javascript:
<tr>
<td ><input class="selection-box" type="checkbox" name="action" value="{{ item.id }}"></td>
<td>...</td>
</tr>
<tr>
<td ><input class="selection-box" type="checkbox" name="action" value="{{ item.id }}"></td>
<td>...</td>
</tr>
Django观点:
submitHandler: function () {
var matches = [];
$(".selection-box:checked").each(function() {
matches.push(this.value);
});
var form = document.forms.namedItem("fileinfo");// This is the popup form that contains that file upload box and other fields
var oData = new FormData(form);
if (matches.length) {
oData.append('action', matches);
}
$.ajax({
url: url,
processData: false,
contentType: false,
type: 'post',
data: oData,
success: function (data) {
if (data.success == true) {
location.reload();
}
}
});
}
答案 0 :(得分:1)
由于您手动执行“解码”,而不是使用.getlist
,因此您可以使用.get
和.split
:
selected_list = self.request.POST.get('action', '').split(',')
但请注意,返回的list
会将ids
作为字符串包含在内,因此您可以使用map
将其转换为整数。
try:
cleaned_list = map(int, selected_list)
except ValueError:
#list is empty: ['']
cleaned_list = []