2013-08-30 10 views
8

Mam formularza Django i na mojej funkcji widoku zrobić to:zmienić wartość formularz przed potwierdzeniem w formie Django

search_packages_form = SearchPackagesForm(data = request.POST) 

chciałbym zastąpić formą pole o nazwie cenę, która jest decleared jako takie:

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

chciałbym zastąpić pole formularza przed wywołaniem search_packages_form.is_valid()

myślałem robi:

search_packages_form.data['price'] = NEW_PRICE 

Ale to nie działa. Jakieś pomysły ?

Odpowiedz

-1

form.is_valid() biegnie przez swoją formę (oraz modelu w przypadku wystąpienia problemu ModelForm) clean metoda'S, powracający True lub False

Jeśli planujesz zmianę formularza dane można to zrobić w ramach ogólnego sposobu czystej lub w terenie, na przykład

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

Nie dla mnie. Nie mogę tego zrobić. Musi działać przed zatwierdzeniem i nie może się zdarzyć w funkcji czyszczenia. Zasadniczo chcę zmienić dane pochodzące od użytkownika. –

+0

Myślę, że musisz to zrobić w javascript. Albo '.change' lub' .keyup' –

Powiązane problemy