【问题标题】:Django - multiple files at once upload formDjango - 一次上传多个文件表单
【发布时间】:2016-03-06 19:40:34
【问题描述】:

我正在寻找一个模块,它允许我创建一个文件上传表单,使用它我可以一次上传多个文件。

我找到了Django-Uploadify,但它似乎已被弃用——最后一次提交是在 4 到 7 年前完成的。

你知道一些允许多个文件上传的最新模块吗?

【问题讨论】:

标签: python django forms


【解决方案1】:

您可以在标准 Django 中进行多重上传:

for f in request.FILES.getlist('files'):
    #do something with f

【讨论】:

  • 是的,但是我必须单独选择每个文件(对于 x 文件,我必须使用 x 表格),不是吗?主要是让上传更舒服。
  • 等等,你想把所有的文件存储在同一个模型字段中吗?我理解正确吗?
  • 其实我可能根本不会使用数据库。问题是我上传了例如 100 个小 CSV 文件,它们会立即转换为图表。之后,它们将被删除。把所有这些文件一个一个上传是很不舒服的,所以我想把它们全部选中并一次上传。
  • 我不关注。如果您不使用数据库,您将它们上传到哪里?
  • 我不确定,但我认为它只是被保存在内存中。您可以上传一个文件,然后例如计算字数并返回此数字,您无需将其显式保存到数据库中。
【解决方案2】:

我不想在视图中做,所以我在这种情况下做了。

class MultipleFileForm(forms.ModelForm):

    def save(self):
        files = []

        if not 'file' in self.files:
            return files

        for single_file in self.files.getlist('file'):
            file = self.Meta.model(
                file=single_file,
            )
            file.save()
            files.append(file)

        return files

    class Meta(object):
        model = FileModel
        fields = ["file"]
        widgets = {
            'file': forms.FileInput(attrs={
                'multiple': True,
            }),
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2011-05-28
    • 2023-03-26
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多