• Django models里面blank和null的用法区别


    一,使用方式

    • null = True 
    • blank = True 
    • null = Trueblank = True

    二,区别

    null

    这个选项跟数据库有关:

      null=True的话,数据库中该字段是NULL,即允许空值

      null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值

    blank

    这个选项和数据验证(表单验证等)有关:

    blank=False(默认)的话,字段没被赋值则会抛错;blank=True则不会。

    CharField和TextField

    CharField和TextField如果没有赋值的话,会被保存成空字符串而不是NULL。

    其他字段,例如IntegerField、DateField,没被赋值则会被保存成NULL。

    例子:

    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
    
    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) 
    
    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
    )
    
  • 相关阅读:
    随机数
    质数
    猜数
    失败
    判断质数
    2019.7.21记录
    9*9乘法表
    小人
    奔跑的字母

  • 原文地址:https://www.cnblogs.com/xiao2er/p/13278004.html
Copyright © 2020-2023  润新知