zoukankan      html  css  js  c++  java
  • 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
    )
    
  • 相关阅读:
    一个滑动小块
    js 封装的函数 总结
    引用公用文件
    静态页面表单中js验证
    linux中Firefox浏览器 手动安装 flash
    将双击“root的主文件”弹出的窗口设置为文件浏览器
    eclipse中的aptana插件的安装
    System Center VMM请注意不同语言版本的差异
    CodeFirst模式开发涉及到mysql简单使用
    Echarts的使用
  • 原文地址:https://www.cnblogs.com/xiao2er/p/13278004.html
Copyright © 2011-2022 走看看