2017-03-01 59 views
0

我這種形式在Django的工作Django的形式是有效的,如果一個驗證是有效的

class EmailOrPhoneForm(forms.Form): 
     phone_or_email = forms.CharField(
     validators=[validate_phonenumber, validate_email], 
    ) 

它有兩個驗證,但我想要的形式返回true,如果他們中的一個是有效的,電話號碼或電子郵件。

我該如何做到這一點,而無需編寫一個驗證器來完成這一切?

回答

0

看着django的源代碼後我發現他們是怎麼做的 in django.core.validators in validate_ipv46_address function。它適用兩個驗證器: validate_ipv4_addressvalidate_ipv6_address

將我的情況應用相同。

def validate_email_or_phone(value): 
    try: 
     validate_email(value) 
    except ValidationError: 
     try: 
      validate_phone_number(value) 
     except ValidationError: 
      raise ValidationError(_('Enter a valid Email address or Phone number'), code='invalid') 

,這將是場

class EmailOrPhoneForm(forms.Form): 
     phone_or_email = forms.CharField(
     validators=[validate_email_or_phone], 
    ) 

希望幫助新的驗證。

相關問題