Django中blank和NULL
当我们在django中添加一个数据库字段时,我们通常会写
在数据库中的列上设置
这两者的组合非常频繁,因为通常情况下,如果您要允许表单中的某个字段为空,则还需要您的数据库允许 几个例子: models.DateTimeField(blank=True) # raises IntegrityError if blank models.DateTimeField(null=True) # NULL allowed,but must be filled out in a form 很明显,这两个选项并不合逻辑,但是如果你希望在表单中总是需要一个字段的话,那么 models.CharField(blank=True) # No problem,blank is stored as '' models.CharField(null=True) # NULL allowed,but will never be set as NULL
这是ORM如何映射 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) 为 PostgreSQL 9.4 创建的数据库字段是: CREATE TABLE Test ( id serial NOT NULL,"charNull" character varying(10),"charBlank" character varying(10) NOT NULL,"charNullBlank" character varying(10),"intNull" integer,"intBlank" integer NOT NULL,"intNullBlank" integer,"dateNull" timestamp with time zone,"dateBlank" timestamp with time zone NOT NULL,"dateNullBlank" timestamp with time zone,CONSTRAINT Test_pkey PRIMARY KEY (id) ) 为 MySQL 5.6 创建的数据库字段是: 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 ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |