1

ManyToManyと呼ばれるフィールドを持つ Django モデルと、そのモデルimagesの単純なModelFormものがあります。

jQuery と非常に基本的な .xml を使用してデータを投稿しようとしていUpdateViewます。

モデルのフィールド

images = models.ManyToManyField(
    RawImage,
    null = True,
)

フォーム

class PublicDataPoolForm(forms.ModelForm):
    error_css_class = 'error'

    class Meta:
        model = PublicDataPool

UpdateView

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すると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 に答える