У меня есть представление, которое обрабатывает запрос POST и пытается создать новый объект. Тем не менее, я знаю, что некоторые данные POST'а недействительны ... Но я хочу исправить это и продолжить создание объекта.
Единственный способ выяснить, как я могу исправить данные в ModelForm, - это создать форму is_valid (). Для этого я могу либо создать форму с данными POST, либо создать ее с уже существующим экземпляром. К сожалению, если я использую данные POST, потому что некоторые из них являются недействительными, форма не будет проверена, и поэтому я не могу получить данные в форме, чтобы исправить это. Если я создаю его с уже существующим экземпляром, это работает, но когда отображается форма, все оставшиеся ошибки по какой-либо причине игнорируются (и, следовательно, не отображаются на веб-странице.) Я пробовал комбинацию создания форма Model из данных POST и предоставление ей экземпляра, но это, похоже, не помогает. Кроме того, я попытался изменить (копию) данных POST, исправить их, а затем создать ModelForm из «фиксированных» данных POST. Такого рода работы, за исключением того, что в моей форме есть несколько полей ImageFields, и они, похоже, просто игнорируются.
Любая помощь будет принята с благодарностью. Я просмотрел все хорошие страницы, которые могу найти, но безрезультатно.
Возможно, есть лучший способ сделать это? Проблема, которую я пытаюсь решить, состоит в том, что я хочу иметь модель, которая содержит ImageFields. Когда я в первый раз заполняю форму, пользователю нужно «загрузить» изображения для каждого из полей. Однако, если он не обновляет изображение для одного из полей, я хочу, чтобы в новой форме появилась кнопка «Загрузить изображение» в полях, где изображения не были загружены, и просто текстовое поле с именем изображения для изображений. которые были загружены.
Изменить 15.09.2010:
Хорошо, я думаю, что могу упростить весь вышеупомянутый вопрос в следующем:
def testing( request ) :
test_form = UserProfileForm()
valid = test_form.is_valid()
return render( 'testing.tmpl', locals(), request )
Когда приведенный выше код отображается, «valid» отображается как False (как и следовало ожидать), но «test_form» отображается без каких-либо ошибок. Я прочитал (если, возможно, не понял?) Документацию по моделям и ModelForms, и я вижу, что большую часть времени ModelForm (в моем случае: UserProfileForm) создается с указанным «экземпляром». Тем не менее, 1) у меня еще нет экземпляра, 2) я все равно ожидал бы, что неэкземплярная форма будет отображать ошибки. Я уверен, что что-то мне не хватает. Пожалуйста, осветите. :)
Еще одна вещь, на которую, возможно, в любом случае ответит ответ на вышеприведенный вопрос, но, насколько я могу судить, вызов is_valid () должен вызывать функцию clean (), которую я определил для UserProfileForm. Тем не менее, (не будучи гуру Python) я поместил 'Raise ValidationError ()' в верхней части clean (), и когда я запускаю код, ошибка не отображается. Мысли?
Обновление: я разобрался с проблемой и ответ ниже. Спасибо!