У меня есть мертвая простая модель загрузки, как так:Джанго 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']
.. если это имеет смысл?
Как выглядит ваш шаблон? –
@ DanielRoseman: Шаблон выглядит примерно так: http://pastebin.com/pKH025MN на данный момент .. – JohnJ