在 blank =False 时,Django模型字段CharField为空为什么不报错?

class Contact(models.Model):
    first = models.CharField(max_length=100)
    last = models.CharField(max_length=100)
    email = models.EmailField(blank=True)

    def __str__(self):
        return ' '.join([self.first, self.last])

在交互环境中

>>> from contacts.models import Contact
>>> nathan = Contact.objects.create(first="Nathan", email="nathan@yergler.net")
>>> nathan
<Contact: Nathan >
>>> nathan.last
''

last字段为空,为什么不报错呢?数据库为 SQLite,难道和数据库有关?

阅读 5.3k
2 个回答

blank只是适用于表单验证,is_valid(),你这里只是创建并没有验证啊,所以不会报错。

具体解释戳这里blank=False

btw, 如果用的是sqlite,django不会做强制空值检查,但是mysql是会的。

你使用的是CharField,是1个字符串类型,blank的时候就是1个空字符串,如果你想表示的是null的话,要使用null参数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题