这里我有班级模特:
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就可以上传多个文件..简单
答案 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()
它将保存所有文件。