为什么django模型层的null和blank约束不起作用?

我正在学习django model层的API,但是当我创建好一个model,并且存入数据库时,发现即使null=False,blank=Falsefield仍然可以存入空值,例如

models.py

from django.db import models

class Person(models.Model):
    name = models.CharField()

在命令行:

>>> p = Person()
>>> p.save()
###此时查看数据库,可以发现一条空的person记录

请问为什么nullblank的约束无效?是否他们对底层API没有约束?

补充一下:我使用的数据库是django自带的sqlite3

谢谢大家的指点!

阅读 5.3k
2 个回答

http://www.weiguda.com/blog/8/
供参考。

如果楼主有兴趣,可以

from django.db import models

class Person(models.Model):
    name = models.IntegerField()

测试一下 我猜会报错。

新手上路,请多包涵

我也遇到这个问题了。

from .model import Person

def A():
    p = Person()
    p.save()

在执行以上代码的时候,Django已经给你赋值了,空字符串'',所以这就是为什么我看查看数据库看到的不是null,而是空字符串,我们知道空字符串''其实并不是真正意义上的null。所以save直接能保存。

我的根据是来自"何时使用null和blank"这个问题的讨论

clipboard.png

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