2012-04-23 142 views
2

如何在只接受特定文件的Django中添加音频和视频文件字段?将文件上传限制为仅音频和视频格式

请用1个例子来解释我。

models.py

class Post(models.Model): 
    audio_file = models.FileField(upload_to = u'mp3/', max_length=200) 
    video_file = models.FileField(upload_to = u'video/', max_length=200) 

forms.py

class PostForm(forms.Form): 
    audio_file = forms.FileField(label = _(u"Audio File")) 
    video_file = forms.FileField(label = _(u"Video File")) 

回答

3

你可以简单地通过窗体的clean方法检查

class FileUploadForm(forms.Form): 
    audio_file = forms.FileField(label = _(u"Audio File")) 
    ... 

def clean(self): 
    cleaned_data = self.cleaned_data 
    file = cleaned_data.get("audio_file") 
    file_exts = ('.mp3',) 

    if file is None: 

     raise forms.ValidationError('Please select file first ') 

    if not file.content_type in settings.UPLOAD_AUDIO_TYPE: #UPLOAD_AUDIO_TYPE contains mime types of required file 

     raise forms.ValidationError('Audio accepted only in: %s' % ' '.join(file_exts)) 


    return cleaned_data