2012-04-23 194 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