2012-02-03 70 views
0

当我创建CustomerForm(),其是EnhancedModelForm(的子类),改变(所需= TRUE)初始化与__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

这应该工作。你能展示一些代码来证明这个问题吗? – 2012-02-03 14:19:50

+0

你是对的,我做了一些更多的测试,当我尝试访问self.errors验证这些修改字段失败(请参阅上面的示例) – 2012-02-03 16:23:50

回答

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. 
""" 

这个伟大的工程

相关问题