Django: после проверки form.is_valid, cleaned_data отсутствует поле изображения - PullRequest
1 голос
/ 02 декабря 2010

У меня есть форма с кучей полей, а затем у меня есть:

    profile_image=forms.ImageField(required=False)

Проблема в том, что после проверки form.is_valid (),

form.cleaned_data.get('first_name')

Например, возвращает истинное имя, однако

form.cleaned_data.get('profile_image')

НЕ возвращает ничего.

В выводе print (request.POST) я получаю

u'profile_image': [u'02 Portfolio Page.jpg']

, но в распечатке (form.cleaned_data) я получаю:

 'profile_image': None

Почемуфайл потерян при проверке is_valid?Что мне делать?

ОБНОВЛЕНИЕ:

class NewChickForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
profile_image=forms.ImageField(required=False)
def do_save(self):
    u = Subject(
        first_name = self.cleaned_data.get('first_name'),
        last_name = self.cleaned_data.get('last_name'),
        profile_image = self.cleaned_data.get('profile_image'),
    )
    print(self.cleaned_data)
    u.save()
    return u

и

s = Subject()
form = NewChickForm(request.POST) # 1)do i add here `request.FILES` ?
if form.is_valid():
    s = form.do_save()
            # 2) s.profile_image = form.cleaned_data.get('profile_image')?

Даже если я сделаю # 1) и # 2), я все равно получаю NONE

1 Ответ

13 голосов
/ 02 декабря 2010

Убедитесь, что вы правильно указали enctype в своей HTML-форме:

<form enctype="multipart/form-data" method="post" action="/foo/">

Кроме того, убедитесь, что вы связываете request.FILES при создании объекта формы.

# Bound form with an image field, data from the request
>>> f = ContactFormWithMugshot(request.POST, request.FILES)

Привязка загруженных файлов к форме

Редактировать: Загрузка файлов

...