django 数据模型中 null=True 和 blank=True 有什么区别?

如题,添加 database field 时,会有这样的字段 models.CharField(null=True, blank=True),这里 null=Trueblank=True 分别代表什么?

阅读 32k
3 个回答
  • null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。

  • blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填,比如 admin 界面下增加 model 一条记录的时候。直观的看到就是该字段不是粗体

引用sof上的一个回答。

class Test(models.Model):
charNull = models.CharField(max_length=10, null=True)
charBlank = models.CharField(max_length=10, blank=True)
charNullBlank = models.CharField(max_length=10, null=True, blank=True)

intNull         = models.IntegerField(null=True)
intBlank        = models.IntegerField(blank=True)
intNullBlank    = models.IntegerField(null=True, blank=True)

dateNull        = models.DateTimeField(null=True)
dateBlank       = models.DateTimeField(blank=True)
dateNullBlank   = models.DateTimeField(null=True, blank=True)        

The database fields created for MySQL 5.6.x are :

CREATE TABLE test (
id INT(11) NOT NULL AUTO_INCREMENT,

 `charNull`      VARCHAR(10) NULL DEFAULT NULL,
 `charBlank`     VARCHAR(10) NOT  NULL,
 `charNullBlank` VARCHAR(10) NULL DEFAULT NULL,

 `intNull`       INT(11)     NULL DEFAULT NULL,
 `intBlank`      INT(11)     NOT  NULL,
 `intNullBlank`  INT(11)     NULL DEFAULT NULL,

 `dateNull`      DATETIME    NULL DEFAULT NULL,
 `dateBlank`     DATETIME    NOT  NULL,
 `dateNullBlank` DATETIME    NULL DEFAULT NULL

)

只是从数据库层面来说。

更详细的不同情参照文档。
https://docs.djangoproject.com/en/dev/ref/models/fields/#null

不知道是搜不到,还是懒得看英文。

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