拥有这个Django模型:
class Subscriber(models.Model):
email = models.EmailField(unique=True, blank=False)
创建包含空电子邮件的订阅者时,我不会遇到任何例外情况:
>>> Subscriber.objects.create(email='')
<Subscriber: Subscriber object>
有趣的是,它第二次会引发IntegrityError:
>>> Subscriber.objects.create(email='')
...
IntegrityError: column email is not unique
所以它似乎验证了完整性,但对于电子邮件格式和空白条目都没有。如何验证电子邮件?
答案 0 :(得分:5)
参数blank
用于表单,不在数据库级别强制执行
Field.blank如果为True,则允许该字段为空。默认是 假
请注意,这与null不同。 null纯粹 与数据库相关,而空白与验证相关。如果有一个字段 blank = True,表单验证将允许输入空值。如果一个 field为blank = False,将需要该字段。
请注意,保存模型时不会自动运行验证程序
强制您必须使用full_clean()方法。
抛出错误是因为您尝试插入两次空字符串并且已经插入 对该领域的独特约束。
答案 1 :(得分:0)
您需要使用内置的电子邮件验证程序验证您的电子邮件字段
from django.core.validators import validate_email
以这种方式声明您的电子邮件字段
email = models.EmailField(unique=True, validators=[validate_email,])
这样它将使用内置的正则表达式验证您的电子邮件字段