我尝试使用$ .ajax发送带有多值字段的表单,然后使用Django表单对其进行验证。但是,Django一直说该表格无效。
问题似乎是jQuery将[]追加到多值字段名的末尾。
有没有解决方法?
class MyModel(Model):
foo = ManyToManyField(OtherModel)
class MyForm(ModelForm):
class Meta:
model = MyModel
fields = ['foo']
def handler(request):
form = MyForm(request.POST)
if form.is_valid():
# form says that 'foo' field is missing
# 'foo[]' is received instead
pass
$.ajax({
url: '/add/',
type: 'POST',
data: {foo: [1, 2, 3]},
success: doABC,
error: doXYZ
});
帖子正文应为foo=1&foo=2&foo=3
,但应为foo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3
Django形式只能识别前者。