Django 使用FileField保存多个文件

Django 使用FileField保存多个文件,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,在现有表单中,我使用文件字段附加不同类型的文件.txt、.pdf、.png、.jpg等,工作正常,但现在我需要该字段来接受多个文件,因此,我使用属性multiple进行输入,以接受一个文件中的多个文件,但当存储在我的数据库中时,仅存储第一个选定文件的路径,而在媒体文件夹中仅存储一个文件,而其他文件则不存储,这就是我拥有的: forms.py class MyForm(forms.Form): attachment = forms.FileField(required=False,widg

在现有表单中,我使用
文件字段
附加不同类型的文件
.txt、.pdf、.png、.jpg等
,工作正常,但现在我需要该字段来接受多个文件,因此,我使用属性
multiple
进行输入,以接受一个文件中的多个文件,但当存储在我的数据库中时,仅存储第一个选定文件的路径,而在媒体文件夹中仅存储一个文件,而其他文件则不存储,这就是我拥有的:

forms.py
class MyForm(forms.Form):
    attachment = forms.FileField(required=False,widget=forms.ClearableFileInput(attrs={'multiple': True}))

models.py
class MyFormModel(models.Model):
    attachment = models.FileField(upload_to='path/', blank=True)
是否可以以这种方式将所有路径单独存储在数据库中
path/file1.txt、path/file2.jpg、path/file3.pdf
并将这三个文件存储在媒体文件夹中?我需要一个自定义的
文件字段来处理这个问题,还是需要在视图中处理这个问题


编辑:文档中有@harmaahylje给我的答案,但不是我使用的1.8版本,这会影响解决方案吗?

表单中执行类似操作。py

class FileFieldForm(forms.Form):
    attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))

Django文档提供了解决方案

在你看来:

def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist('file_field')
        if form.is_valid():
            for f in files:
                ...  # Do something with each file.
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

这允许我进行多选输入,但在数据库中只存储多个文件之一的路径,以及媒体文件夹中的一个文件。你说得对。这个问题的实际解决方案是我的答案与下面的@harmaahylje的答案结合在一起,在
#对每个文件做点什么。
部分我尝试在附件字段中分配f文件,但仍然只有一条路径,我没有做什么。@M.Gar您需要为每个文件创建一个新对象
MyFormModel.objects.create(attachment=f)
导致此错误的
管理器无法通过MyFormModel实例访问
。我尝试使用模型而不是实例,现在出现此错误
save()得到一个意外的关键字参数“force\u insert”
@M.Gar请发布一些代码,你想做什么。