在现有表单中,我使用FileField
附加不同类型的文件.txt, .pdf, .png, .jpg, etc
并正常工作,但现在我需要该字段接受多个文件,因此我使用了属性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
将所有路径分别存储在数据库中,并将这三个文件存储在媒体文件夹中?我是否需要自定义FileField
来获取此信息,或者视图是我需要处理的地方?
编辑:答案@harmaahylje给了我文档,但不是因为我使用的1.8这会影响解决方案吗?
答案 0 :(得分:1)
在forms.py
:
class FileFieldForm(forms.Form):
attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
答案 1 :(得分:1)
Django docs有解决方案https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#uploading-multiple-files
在您看来:
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)