2012-04-07 4 views
3

Я использую FileField и текстовое поле в моей формеДжанго forms.FileField проверка

class SolutionForm(forms.Form): 
    text = forms.CharField(widget=forms.Textarea, required=False) 
    file = forms.FileField(required=False) 

Я также определил чистый метод:

def clean(self,*args, **kwargs): 
    if (not self.data['file'] or self.data['text']): 
     raise forms.ValidationError('Please enter your code in text box or upload an arrpopriate file.') 
return self.data['text'] 

, но при отправке формы я получаю следующие ошибки:

"Key 'file' not found in <QueryDict: {u'text': [u''], u'csrfmiddlewaretoken': [u'c52ea10c16620d3ebf0a20f015a3711d'], u'version': [u'C 1.1.1']}>" 

Как ссылаться на поле файла?

Любая помощь будет оценена по достоинству.

Thanks,

Pankaj.

+2

https://docs.djangoproject.com/ru/dev/topics/http/file-uploads/ help? – lazy1

+0

+1 lazy1, просто проверьте request.FILES ['file'] – okm

+0

Я не могу сделать это в чистом методе(), там нет переменной запроса. Есть ли способ проверить в чистом методе? –

ответ

3
# inside SolutionForm class 
def clean(self): 
    if not (self.cleaned_data['file'] or self.cleaned_data['text']): 
     raise forms.ValidationError('Please enter your code in text box or upload an appropriate file.') 
    return self.cleaned_data 
+0

My bad. Я делал проверку в «clean_text» вместо основного «чистого» метода. Корректировка, которая сделала трюк –

Смежные вопросы