我的目标是将Django ModelForm上的FileField限制为PDF和Word文档。我用谷歌搜索的答案都涉及创建一个单独的文件处理程序,但我不确定如何在ModelForm的上下文中做到这一点。settings.py中有没有可以用来限制上传文件类型的设置?
发布于 2011-06-24 05:59:55
我通过在ModelForm上使用clean_your_field方法来处理此问题。您可以在settings.py中设置一个可接受的文件扩展名列表,以便在您的clean方法中进行检查,但是settings.py中没有内置任何内容来限制上传类型。
例如,Django-Filebrowser采用了在settings.py中创建可接受的文件扩展名列表的方法。
希望这能帮到你。
发布于 2012-01-12 05:24:44
创建验证方法,如下所示:
def validate_file_extension(value):
if not value.name.endswith('.pdf'):
raise ValidationError(u'Error message')
并将其包含在FileField验证器中,如下所示:
actual_file = models.FileField(upload_to='uploaded_files', validators=[validate_file_extension])
此外,您应该在setting.py上创建一个列表并遍历它,而不是手动设置您的模型允许哪些扩展。
编辑
要筛选多个文件:
def validate_file_extension(value):
import os
ext = os.path.splitext(value.name)[1]
valid_extensions = ['.pdf','.doc','.docx']
if not ext in valid_extensions:
raise ValidationError(u'File not supported!')
发布于 2017-04-28 21:26:03
一种更简单的方法是在您的表单中这样做
file = forms.FileField(widget=forms.FileInput(attrs={'accept':'application/pdf'}))
https://stackoverflow.com/questions/6460848
复制相似问题