1

我有一个 Django 模型,其中包含一个ManyToMany名为 的字段images,以及该模型的一个简单字段ModelForm

我正在尝试使用 jQuery 和一个非常基本的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)

jQuery发布数据

$.ajax({
    type: 'post',
    dataType: 'json',
    url: '/rawdata/publicdatapools/' + pk + '/add-data/',
    data: {images: [1, 2]}
});

我得到一个ValidationError,因为该字段images是必需的。request.POST如果我在 my 中打印 my UpdateView,我会得到:

<QueryDict: {u'images[]': [u'1', u'2']}>

我相信问题出在那些[],因为我已经检查了另一种以更传统方式发布的表单,并且字段名称request.POST中没有这些[]

知道我错过了什么吗?

4

1 回答 1

2

您需要jQuery.ajaxSettings.traditional = true;在页面加载时进行设置,以便 jquery 不会将 附加[]到键。

来源:http: //forum.jquery.com/topic/jquery-post-1-4-1-is-appending-to-vars-when-posting-from-array-within-array#14737000000691277

于 2012-11-28T18:40:32.940 回答