【发布时间】:2020-01-14 16:01:18
【问题描述】:
我一直在尝试为图像编写多重上传代码,仅我的代码 即使选择了超过 1 张图片,我也会上传 1 张图片,我不知道如何迭代,一旦选择了文件并打印了我选择的多张图片,我就进行了打印,但是当我保存表单时,它只保存一张图片。
我基本上尝试使用出现在 Django 中的代码 文档。
models.py
class Images(models.Model):
picture = models.ImageField(upload_to='media/photoadmin/pictures')
forms.py
类 UploadImages(forms.ModelForm): 元类: 模型 = 图片 字段 = ('图片',) 小部件 = {'图片': forms.ClearableFileInput( attrs={'multiple': True})}
views.py
class Upload(FormView):
form_class = UploadImages
template_name = 'photoadmin/upload.html'
success_url = 'photoadmin/'
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
files = request.FILES.getlist('picture')
if form.is_valid():
form.save()
for f in files:
file_instance = Images(picture=f)
file_instance.save()
return render(request, 'photoadmin/index.html')
else:
return render(request, 'photoadmin/index.html')
html
{% extends 'base.html' %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
<p><a href="{% url 'index' %}">Return to home</a></p>
{% endblock %}
此代码写入数据库但不将文件上传到静态 文件夹
【问题讨论】:
-
我认为不应该是
form.save()。您想保存每个文件。 -
您好,我搜索了另一种保存方式,但除了 form.save() 之外找不到任何不同的方式,您能建议我另一种方式吗?谢谢您的帮助
-
请检查我的回答。我不确定它是否会起作用,因为我从未处理过基于类的表单。
标签: django django-models django-forms django-views