好的,到目前为止我理解的是: 我可以将数据从jquery传递到django作为json格式: AJAX数据:{'name':'flag',list_of_ids:[12,32,12,32]}
Django的request.POST数据:{'name':'flag','list_of_ids []':[12,32,12,32]}
现在,要访问django中的列表,你可以这样做:request.POST.getlist('list_of_ids')
现在,假设我要清理list_of_ids []的输入。
所以我创建了一个form.py,其名称= forms.CharField(),list_of_ids = forms.ModelMultipleChoiceField(queryset = ObjectModel.objects.all(),required = False)
返回的“已清理”数据恰好是:{'name':'flag','list_of_ids':[]}
现在我的问题是,我怎样才能使forms.py与它一起工作,以便它实际上接受list_of_ids [],并输出一个清单_的list_of_ids? 这可能吗?
修改 这是我的班级形式:
class ModelForm(form.Form):
name = form.CharField()
relation = forms.ModelMultipleChoiceField(queryset=ForeignObjects.objects.all(), required=False)
然后是views.py atm:
def test_view(request):
form = ModelForm(request.POST)
if form.is_valid():
#do stuff
#do stuff
这是ajax调用: $就({ url:'/ test_url /', 类型:'POST', 数据:{ 名称:'test', list_of_ids:[12,32,41] } })
好的,正如所解释的,从javascript到django,它将是这种数据:
{
'name' : 'test',
'list_of_ids[]' : [12,32,41]
}
这是django所看到的。所以访问list_of_ids []将是request.POST.getlist('list_of_ids []')。
现在,如果我将其传递给表单,django不会捕获list_of_ids [],而是将list_of_ids映射为空列表。我如何在表格中捕捉到这一点?它需要是一个对象列表吗? (我试过了)
答案 0 :(得分:0)
看来你已经使用'形式',那么我所做的是: views.py:
if request.method == "POST":
form = MyForm(request.POST)
***do something ***
else:
form = MyForm() # this is an empty form
return render(request, 'my**.html',{'form':form})
答案 1 :(得分:0)
$.ajaxSettings.traditional = true;
在javascript PRIOR中添加该段代码以调用您的帖子请求。 这样做是因为它返回到vanilla flavor jquery,其中list_of_ids []返回到list_of_ids,从那里,在表单中传递request.POST按预期清理数据。