1

djnago で複数のファイルをアップロードする方法を知っています。私が使う:

<form enctype="multipart/form-data" action="" method="post">
    {% csrf_token %}
    <p>Press control to upload more than image at same time</p>
    <input type="file" name="myfiles" multiple>
    <input type="submit" name="upload" value="Upload">
</form>

しかし、私が望むのは単一のファイルのアップロードですが、ユーザーが「+」ボタンをクリックして新しいファイルのアップロードを自動的に作成し、ユーザーが複数のファイルをアップロードできるようにします。hotmail にファイルを添付するように。

4

1 に答える 1

6

あなたが探しているのはFormSet、複数のフォームのセットと、新しいフォームに入力するための JavaScript です。

https://docs.djangoproject.com/en/dev/topics/forms/formsets/

以下は、新しいフォームの HTML を動的に構築するのに役立つ JS コードへの参照です。

Ajax を使用して Django フォームセットにフォームを動的に追加する


フォームセットの設定は簡単ですが (どこにでも文書化されています)、JS の部分で助けが必要になるかもしれません:

実際には、別の方法を使用してフォームを動的に追加しています。属性に簡単に置き換え可能な esformset.empty_formが付属する非表示の div を設定しました。__prefix__

var form_count = {{ formset.total_form_count }};
$('#add_form').click(function() {
    var form = $("#empty_form").html().replace(/__prefix__/g, form_count);
    $('#forms').append(form);
    form_count++;
    $('#id_form-TOTAL_FORMS').val(form_count);
});


<div id="empty_form" style="display:none;">
    {{ formset.empty_form.as_p }}
</div>
<div id="add_form">Add another form</div>
<form id="forms">
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form.as_p }}
    {% endfor %}
</form>
于 2012-06-05T18:04:03.503 に答える