2014-12-04 3 views
0

У меня есть мертвая простая модель загрузки, как так:Джанго FileUpload через ModelForm: форма не действительна

class UploadFile(models.Model): 
    file_field = models.FileField(upload_to='files/%Y/%m/%d') 

и соответствующая форма модели, как так:

class UploadFileForm(forms.ModelForm): 

    class Meta: 
     model = UploadFile 

     fields = (\ 
      "file_field", \ 
       ) 

мой взгляд тоже мертв просто, как так:

def home(request): 
    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     print request.POST, request.FILES 
     if form.is_valid(): 
      print "yes, form is valid" 
     else: 
      print form.errors 
    <rest of the view code here..> 

Теперь, я получаю эту ошибку все время:

<ul class="errorlist"><li>file_field<ul class="errorlist"><li>This field is required. </li></ul></li></ul> 

Смешно, когда я меняю свое название модели с file_field на file - все работает так, как ожидалось! В идеале, я бы назвал поле file_field, а не только file.

Я вижу, что ДИКТ запроса выглядит следующим образом:

<QueryDict: {u'csrfmiddlewaretoken': [u'xCSgqBdgdKlZ0nUUcTICL1YvYn1k5']}> <MultiValueDict: {u'file': [<InMemoryUploadedFile: fileersd.pdf (application/pdf)>]}> 

Как сказать Джанго, что file_field в основном в file из Словаря запроса выше?

Так что, когда я хочу, чтобы связать форму:

form = UploadFileForm(request.POST, request.FILES) 

Я хотел бы иметь возможность сказать, что file_field из моей модели/форма такая же, как request.FILES['file'] .. если это имеет смысл?

+0

Как выглядит ваш шаблон? –

+0

@ DanielRoseman: Шаблон выглядит примерно так: http://pastebin.com/pKH025MN на данный момент .. – JohnJ

ответ

0

Было бы полезно, если бы вы заявили, что используете dropzone.js, так как похоже, что проблема полностью там. Глядя на the docs для этой библиотеки, я вижу следующее:

Если вы хотите другое имя, чем file вы можете настроить Dropzone с опцией paramName.

поэтому вы должны просто добавить paramName: "file_field" в ваш Dropzone.options.myDropzone объект.

+0

Я чувствую себя полным идиотом, которым я, вероятно, являюсь! Мне так жаль об этом - я никогда не думал, что это связано с Dropzone! Еще раз спасибо. Принял ваш ответ. – JohnJ