Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django表单上载多个文件_Python_Django_Django Forms - Fatal编程技术网

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()