在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