我有一个名为ManyToMany
的{{1}}字段的Django模型,以及该模型的简单images
。
我正在尝试使用jQuery和非常基本的ModelForm
发布数据。
UpdateView
images = models.ManyToManyField(
RawImage,
null = True,
)
class PublicDataPoolForm(forms.ModelForm):
error_css_class = 'error'
class Meta:
model = PublicDataPool
class PublicDataPoolAddDataView(AjaxableResponseMixin, UpdateView):
model = PublicDataPool
form_class = PublicDataPool_ImagesForm
@method_decorator(user_passes_test(lambda u: user_has_active_subscription(u)))
def dispatch(self, *args, **kwargs):
return super(PublicDataPoolAddDataView, self).dispatch(*args, **kwargs)
我得到$.ajax({
type: 'post',
dataType: 'json',
url: '/rawdata/publicdatapools/' + pk + '/add-data/',
data: {images: [1, 2]}
});
因为字段ValidationError
是必需的。如果我在images
打印request.POST
,我就会知道:
UpdateView
我认为问题出在那些<QueryDict: {u'images[]': [u'1', u'2']}>
上,因为我已经检查了另一种以更传统的方式发布的表单,[]
没有那些request.POST
在字段名称中。
知道我缺少什么吗?
答案 0 :(得分:2)
您需要在页面加载时设置jQuery.ajaxSettings.traditional = true;
,以便jquery不会将[]
附加到密钥。