Как можно очистить данные в форме и отобразить очищенные данные вместо отправленных данных?
В моей форме есть несколько полей, и каждый раз, когда пользователь отправляет их, они должны снова отображаться со значениями, введенными пользователем. Однако некоторые поля я бы хотел очистить и обновить для пользователя. Более конкретно, у меня есть поле 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}