2013-08-30 37 views
8

Tôi có một hình thức django và về chức năng quan điểm của tôi tôi làm điều này:thay đổi một giá trị hình thức trước khi xác nhận trong hình thức Django

search_packages_form = SearchPackagesForm(data = request.POST) 

Tôi muốn ghi đè lên một cánh đồng mẫu gọi là giá được decleared như vậy:

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

tôi muốn ghi đè lên các trường mẫu trước khi gọi search_packages_form.is_valid()

tôi nghĩ làm:

search_packages_form.data['price'] = NEW_PRICE 

Nhưng nó không hoạt động. Bất kỳ ý tưởng?

Trả lời

-1

form.is_valid() chạy qua hình thức của bạn (và mô hình trong trường hợp của một ModelForm) phương pháp của clean, trở True hoặc False

Nếu bạn có kế hoạch thay đổi hình thức dữ liệu bạn có thể làm điều đó trong phương pháp sạch nói chung hay ở cấp cơ sở, ví dụ

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

Không tốt cho tôi. Tôi không thể làm điều này. Nó phải chạy trước khi xác nhận và không thể xảy ra trong chức năng sạch. Tôi cơ bản muốn thay đổi dữ liệu đến từ người dùng. –

+0

Tôi nghĩ bạn sẽ cần phải làm điều đó với javascript, sau đó. Hoặc là '.change' hoặc' .keyup' –