使用Django Admin中的Files Field上传多个文件

时间:2018-04-09 13:22:18

标签: python django django-admin filefield

这里我有班级模特:

models.py

class Parameter(models.Model):
    files = models.FileField(
        upload_to='uploaded',
        blank=True,
        null=True,
    )

我在 admin.py

中有这个
class ParameterAdmin(admin.ModelAdmin):
    form = Parameter

然后我将其添加到 forms.py 中,以便它可以选择多个文件

class ParameterForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ParameterForm, self).__init__(*args, **kwargs)
        self.fields['files '] = forms.FileField(
            widget=forms.ClearableFileInput(attrs={'multiple': True}),
        )

但是,在我尝试通过django admin选择并选择多个文件之后..并非所有文件都被上传,并且只上传了一个最新选择的文件..

如何通过django admin上传多个文件? 我不需要来自...的view.py和html我只需要django admin就可以上传多个文件..简单

3 个答案:

答案 0 :(得分:0)

FileField仅存储单个文件。如果你想要多个文件,你需要多个字段(但除非每个文件都作为一个独特的特定角色,这是一个糟糕的设计)或一个带有外键limitedContents的独特ParameterFile模型和Parameter,然后使用FileField

答案 1 :(得分:0)

以下是您可能需要的示例实现(它为管理页面提供了一些调整)。 https://blog.rousek.name/2017/08/11/uploading-multiple-files-in-django-admin/

您也可以使用django-filer(https://github.com/stefanfoulis/django-filer

答案 2 :(得分:0)

您应该像这样覆盖ParameterAdmin的save_model函数:

def save_model(self, request, obj, form, change):
    files = request.FILES.getlist('files')
    for f in files:
        instance = Parameter(files=f)
        instance.save()

它将保存所有文件。