在django的EmailField验证中出现异常
我有一个名为在django的EmailField验证中出现异常,django,validation,django-forms,emailfield,Django,Validation,Django Forms,Emailfield,我有一个名为EmailHistory的模型,其中一个字段如下所示: from_email = models.EmailField(verbose_name="From:") 我创建了一个模型表单,希望验证电子邮件地址,除非它设置为“匿名”。我试了下列方法,但没有用 class EmailForm(ModelForm): class Meta: model = EmailHistory exclude = ('to_email') to_emai
EmailHistory
的模型,其中一个字段如下所示:
from_email = models.EmailField(verbose_name="From:")
我创建了一个模型表单,希望验证电子邮件地址,除非它设置为“匿名”。我试了下列方法,但没有用
class EmailForm(ModelForm):
class Meta:
model = EmailHistory
exclude = ('to_email')
to_emails = forms.CharField()
def clean_from_email(self):
from_email = self.cleaned_data['from_email']
if from_email == "Anonymous":
return from_email
else:
return super(EmailForm, self).clean_from_email();
我怀疑问题在于,正如所解释的,底层表单字段的
clean
方法(它反过来运行验证器)在表单本身的特定clean\u表单字段
方法之前运行。您可能希望在表单中使用普通字符域,并自己将电子邮件验证添加到clean方法中 如果不从电子邮件重新定义,我就无法让它工作。因此,我重新定义了它,然后使用django.core.validators.validate\u email
进行了电子邮件验证:
class EmailForm(ModelForm):
class Meta:
model = EmailHistory
exclude = ('to_email')
to_emails = forms.CharField()
from_email = forms.CharField(required=True)
def clean_from_email(self):
from_email = self.cleaned_data['from_email']
if from_email == "Anonymous":
from_email = "myemail@example.com"
validate_email(from_email)
return from_email