django - 将char字段验证为电子邮件

时间:2016-06-26 14:36:01

标签: python django

让我说我有模特:

class Subscription(models.Model):
    address = models.CharField(max_length=255)

然后我创建表单:

class SubscriptionForm(ModelForm):
    class Meta:
        model = Subscription
        fields = ['address']
    def clean_address(self):
        email = self.cleaned_data['address']
        #VALIDATE HERE IF IT IS EMAIL
        return email

如何将email validator应用于我的字段而不更改模型

编辑:这有可能吗?

2 个答案:

答案 0 :(得分:1)

您最好只在模型中设置验证器。无论如何,添加验证器并不会影响数据库,因此它并没有真正改变数据库模型。

但是如果你真的想调用验证器那么就这样做。

from django.core.validators import EmailValidator
def clean_address(self):
    email = self.cleaned_data['address']

    EmailValidator()(email)

答案 1 :(得分:0)

将验证码添加到validator的{​​{1}}字段:

CharField

但是你应该考虑改用from django.core.validators import EmailValidator emailvalidator = EmailValidator(message="invalid email") class Subscription(models.Model): address = models.CharField(max_length=255, validators=[emailvalidator])