2012-02-03 8 views
0

EnhancedModelForm()のサブクラスであるCustomerForm()を作成すると、フォームを__init__()で初期化したときの変更(必須= True)は、デフォルトのクリーンメソッドでは考慮されません。どうしてこれなの?サブクラス化されたフォームで検証が中断するのはなぜですか?

class EnhancedModelForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(EnhancedModelForm, self).__init__(*args, **kwargs) 
     test = self.errors 

、フォーム

class CustomerForm(EnhancedModelForm): 

    class Meta: 
     model = Customer 
     fields = ('salutation', 'first_name', 'last_name', 'phone_number', 'email_address') 

    def __init__(self, *args, **kwargs): 
     super(CustomerForm, self).__init__(*args, **kwargs) 
     self.fields['phone_number'].required = True 
     self.fields['email_address'].required = True 
+0

これは動作するはずです。問題を示すコードを表示できますか? –

+0

あなたが正しいです、私はいくつかのテストを行いました、そして、私はそれらの変更されたフィールドのself.errors検証にアクセスしようとすると失敗します(上記の例を参照) –

答えて

0

代わりのdjango.forms.form.BaseFormでINIT()メソッドは、私は今_post_clean()を使用してフックを(上書き)

""" 
An internal hook for performing additional cleaning after form cleaning 
is complete. Used for model validation in model forms. 
""" 

これはうまくいく

関連する問題