哦,看起來,我所做的一切都是靠我的寂寞......後一種選擇確實比在特定領域找到並調用驗證例程簡單得多。更容易壓扁的錯誤:
設置所有可能需要的領域required=True
然後在form.clean()
測試其他字段的值,如果有必要,只是從self.errors
# payment type
payment_method = forms.CharField(max_length="20", required=True)
payment_method.widget=forms.RadioSelect(choices=PAYMENT_METHOD_CHOICES)
# credit card details
cc_number = CreditCardField(max_length=20, required=True)
cc_name = forms.CharField(max_length=30, required=True)
cc_expiry = ExpiryDateField(required=True)
cc_ccv = VerificationValueField(required=True)
def clean(self):
data = super(PaymentForm, self).clean()
if data.get('payment_method') == 'paypal':
for field_name in ['cc_number','cc_name','cc_expiry','cc_ccv']:
if field_name in self.errors:
del self.errors[field_name]
刪除錯誤