Как сохранить поле изображения отправленной формы перед методом очистки в мастере форм (Django 1.2)

Я получаю сообщение об ошибке "Это поле обязательно для заполнения" для поля изображения при отправке формы в мастере форм.

class SignupForm(forms.ModelForm):
    username = forms.CharField(
        label = _("Username*"),
        max_length = 30,
        widget = forms.TextInput()
    )
    image = forms.ImageField(label = _("Profile picture*"), required=True)
class Meta:
    model = Profile
    fields = ('name','gender','birth_date',)

Это моя последняя форма в мастере форм. При отправке этой формы я получил имя пользователя и другие поля в чистом методе, но не изображение. Есть ли способ сохранить изображение перед проверкой этой формы, чтобы избежать ошибки «Это поле обязательно для заполнения»?


person Zubair Afzal    schedule 16.11.2011    source источник
comment
Вы имеете в виду, что хотите исключить изображение поля из проверки?   -  person Paulo    schedule 16.11.2011
comment
Я хочу проверить это, но это поле пусто при отправке формы, хотя загруженный файл присутствует в request.FILES . Также в self.data в чистом методе этой формы поля изображения нет. @Paulo, не могли бы вы рассказать мне, как форма отправляется перед проверкой в ​​мастере форм?   -  person Zubair Afzal    schedule 17.11.2011
comment
В request.FILES ‹MultiValueDict: {u'2-image': [‹InMemoryUploadedFile: image1.jpg (image/jpeg)›]}›. Но в request.POST поля изображения нет. Я хотел сделать что-то вроде: SignupForm(request.POST, request.FILES), чтобы я мог проверить поле изображения вручную.   -  person Zubair Afzal    schedule 17.11.2011
comment
так что я больше читал об этом и обнаружил, что причина, по которой вы не можете использовать файл (изображение), заключается в том, что он не поддерживается, поэтому мое решение для вас - прочитать это code.djangoproject.com/ticket/7439 и отредактируйте приложение django.contrib.formtools или просто скопируйте и вставьте инструменты формы в свой проект и измените импортирует в yourproject.formtools, просто примените патч, указанный в ссылке, и он должен работать нормально   -  person Paulo    schedule 17.11.2011


Ответы (1)