2012-02-03 2 views
0

EnhancedModelForm()의 하위 클래스 인 CustomerForm()을 만들 때 __init__()을 사용하여 양식을 초기화 할 때 변경 한 내용 (필수 = 참)이 기본 정리 메서드에서 고려되지 않습니까? 왜 이런거야?서브 클래 싱 된 폼에서 유효성 검사가 중단되는 이유는 무엇입니까?

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

대신 INIT() 메소드는, 지금의 django.forms.form.BaseForm _post_clean() 후크()

""" 
An internal hook for performing additional cleaning after form cleaning 
is complete. Used for model validation in model forms. 
""" 
을 사용하여 재정의 형태

위대한 작품입니다