2013-08-30 2 views
8

У меня есть форма Джанго и на моей функции зрения я делаю это:изменить значение формы Перед проверкой в ​​Django форме

search_packages_form = SearchPackagesForm(data = request.POST) 

Я хотел бы перезаписать поля формы под названием цену, которая decleared как таковые:

price = forms.ChoiceField(choices = PRICE_CHOICES, required = False,widget = forms.RadioSelect) 

Я хотел бы, чтобы перезаписать поля формы перед вызовом search_packages_form.is_valid()

Я думал, что делать:

search_packages_form.data['price'] = NEW_PRICE 

Но это не сработает. Есть идеи ?

ответ

-1

form.is_valid() проходит через вашу форму (и модели в случае ModelForm) clean метод, возвращая True или False

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

class YourForm(DerivingClass): 
    # regular stuff 

    def clean_<ATTR>(self): 
     # here 
     return self.cleaned_data 

    def clean(self): 
     # or here 
     return super(YourForm, self).clean() 
+3

Не подходит для меня. Я не могу это сделать. Он должен выполняться до проверки и не может выполняться в чистой функции. Я принципиально хочу изменить данные, полученные от пользователя. –

+0

Думаю, вам нужно будет сделать это с помощью javascript. Либо '.change', либо' .keyup' –

Смежные вопросы