Python 使用Django表单上载多个文件
我正试图写一个应用程序,可以处理上传多个文件的时间。我的应用程序只支持一个文件上传,但是添加一个循环来处理文件列表还没有起作用Python 使用Django表单上载多个文件,python,django,django-forms,Python,Django,Django Forms,我正试图写一个应用程序,可以处理上传多个文件的时间。我的应用程序只支持一个文件上传,但是添加一个循环来处理文件列表还没有起作用 #models.py class image(models.Model): filename = models.CharField(max_length=100, blank=False, null=False) image = models.ImageField(upload_to='images/') uploaded_at = models
#models.py
class image(models.Model):
filename = models.CharField(max_length=100, blank=False, null=False)
image = models.ImageField(upload_to='images/')
uploaded_at = models.DateTimeField(auto_now_add=True)
user = models.CharField(max_length=100, default='default')
表格:
以及视图.py的相关部分:
def image_upload(request):
if request.method == 'POST':
for f in request.FILES.getlist('image'):
formI = ImageForm(request.POST, f, instance=image())
if formI.is_valid():
fs = formI.save(commit=False)
fs.filename = f
fs.user = request.user
fs.save()
(视图中还有其他内容,但在此之前它目前已中断)
结果是错误:
AttributeError:“临时上载文件”对象没有属性“get”
从以下行:如果formI.is\u有效():
我最初用request.FILES
而不是f
创建了formI=ImageForm(request.POST,f,instance=image())
,似乎改变了这一点。我应该用什么来代替这两个选项<代码>请求。文件
只会上载所选图像中的一个图像
传递到ImageForm
的正确对象是什么
使用Python 3.6.8和Django 2.2.4
编辑:我已经看到了关于多个文件上传的其他SO问题,包括建议的副本,但没有人向我明确说明对象
ImageForm
需要什么(而不是我的示例中的f
。使用django`formset。这应该可以解决您的问题,同时也可以查看完整的实现。可能的重复我对表单集不太了解,但经过一点阅读,它们似乎允许一个页面上有多个表单实例,这是真的吗?我想通过一个表单上传多个文件。@Bird你在评论中检查过吗?只有一个模型可以在一个地方处理上传图像
def image_upload(request):
if request.method == 'POST':
for f in request.FILES.getlist('image'):
formI = ImageForm(request.POST, f, instance=image())
if formI.is_valid():
fs = formI.save(commit=False)
fs.filename = f
fs.user = request.user
fs.save()