专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

django数据模型中null和blank的区分

虽然本人使用django也有几年的时间,但是还是对django中数据模型的nullblank有点分不清楚,我想很多人也和我一样的困惑,现在将全面彻底的讲解下两个的区别。

一、null的使用

  • 1、默认是False的,如果设置为True的时候,django将会映射到数据表指定是否为空
  • 2、如果这个字段设置为False的时候,如果没给这个字段传递任何值的时候,django也会使用一个空字符串('')存储进去
  • 3、如果这个字段设置为True的时候,django会产生两种空值的情形(null和空字符串)
  • 4、如果想要在表单验证的时候允许这个字符串为空的时候,django建议使用blank=True
  • 5、如果你的字段BooleanField的时候,可以为空的建议使用NullBooleanField

  • 1、数据模型代码
    class BookModel(models.Model):
        """
        书籍的数据模型
        """
        uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name='uuid')
        name = models.CharField(max_length=100, default='', null=True, verbose_name='书籍名称')
        # null默认是False,但是本案例中还是写上去,更好区分
        author = models.CharField(max_length=100, default='', null=False, verbose_name='作者')
        # blank=True仅仅是在表单校验的时候可以为空,别的时候没什么区别
        price = models.FloatField(default=0, blank=True, verbose_name='价格')
        create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
        update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')

        def __str__(self):
            return '<BookModel>({}, {}, {}, {}, {}, {})'.format(self.uuid, self.name, self.author, self.price,self.create_time, self.update_time)

        class Meta(object):
            db_table = 'book'

  • 2、sql语句
    CREATE TABLE `book` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) DEFAULT NULL,
      `price` double NOT NULL,
      `create_time` datetime(6) NOT NULL,
      `update_time` datetime(6) NOT NULL,
      `uuid` char(32) NOT NULL,
      `author` varchar(100) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uuid` (`uuid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  • 3、数据库表结构

    64_1.png

  • 4、插入数据后显示对比

    64_2.png

二、blank的使用

  • 1、这个字段是在表单验证的时候可以为空,默认是False
  • 2、这个和null是有区别的

    • blank=True仅仅是在表单验证的时候可以为空
    • null=True仅仅是数据库级别的null
未经允许不得转载:搜云库技术团队 » django数据模型中null和blank的区分

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们