Как принудительно очистить поле и заново отобразить его в Django? - PullRequest
2 голосов
/ 25 октября 2010

Как можно очистить данные в форме и отобразить очищенные данные вместо отправленных данных?

В моей форме есть несколько полей, и каждый раз, когда пользователь отправляет их, они должны снова отображаться со значениями, введенными пользователем. Однако некоторые поля я бы хотел очистить и обновить для пользователя. Более конкретно, у меня есть поле FriendlyIntegerField(forms.CharField), в котором я переопределяю to_python, чтобы не только вызвать int(str(value)), но также установить любое отрицательное число на 0 и т. Д. Я не хочу повторно отображать форму с недопустимыми данными и имею пользователь исправляет это сам (именно так Django хочет, чтобы я это сделал).

У меня нет проблем с очисткой данных и использованием их для остальной части моей функции просмотра, но как я могу обновить фактическую форму с этими данными?

Кстати, форма не отражает структуру в моей модели данных и поэтому наследуется от Form, а не ModelForm.

Edit:

Мое поле (в урезанном варианте) выглядит так:

class FriendlyIntegerField(forms.CharField): def to_python(self, value): try: return str(int(str(value).replace(' ',''))) except: raise forms.ValidationError('some error msg')

Моя форма (в урезанном варианте) выглядит так: class SearchForm(forms.Form): price_from = FriendlyIntegerField() price_to = FriendlyIntegerField()

И мой взгляд: def search(request, key): if request.method == 'POST': form = SearchForm(request.REQUEST) if not form.is_valid(): print "Form not valid" else: form = SearchForm() return render_to_response('path_to_template', {'form' : form}

1 Ответ

0 голосов
/ 25 октября 2010

Если после того, как вы очистили свою форму с помощью is_valid(), вы обработаете эту очищенную форму с помощью своего представления, а не перенаправите на новую страницу, вы увидите очищенные данные на своей странице.

(Если вы хотите, чтобы пользователь увидел эти очищенные данные и затем правильно отправил их, вы можете использовать скрытое поле, чтобы отслеживать, были ли данные формы уже очищены, но это не без сложностей ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...