我知道如何在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>
但我想要的是单个文件上传,但允许用户点击&#34; +&#34;按钮并自动创建新文件上传,允许用户上传多个文件。比如在hotmail中附加文件。
答案 0 :(得分:6)
您正在寻找FormSet
- 一组多个表单,以及一些用于填充新表单的JavaScript。
https://docs.djangoproject.com/en/dev/topics/forms/formsets/
以下是对JS代码的一些引用,它们将有助于为新表单动态构建HTML:
Dynamically adding a form to a Django formset with Ajax
设置表单集很简单(它随处可见),但您可能需要JS部分的帮助:
我实际上使用不同的方法来动态添加表单。我使用formset.empty_form
设置了一个隐藏的div,它的属性中可以轻松替换__prefix__
es:
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>