Django models中关于blank与null的补充说明

建立一个简易Model

class Person(models.Model):
    GENDER_CHOICES=(
        (1,‘Male‘),
        (2,‘Female‘),
        )
    name=models.CharField(max_length=30,unique=True,verbose_name=‘姓 名‘)
    birthday=models.DateField(blank=True,null=True)
    gender=models.IntegerField(choices=GENDER_CHOICES)
    account=models.IntegerField(default=0)  

blank

设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。

如果为True,字段允许为空,默认不允许。

null

设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。

如果为True,空值将会被存储为NULL,默认为False。

如果想设置BooleanField为空时可以选用NullBooleanField型字段。

一句话概括

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

原文地址:https://www.cnblogs.com/shengguorui/p/11122942.html

时间: 2024-10-10 01:34:35

Django models中关于blank与null的补充说明的相关文章

django models 中choices之用法举例

CHOICES常用做单选属性,下面举例在django models中人物性别的用法: 我们先定义一个模型,名字为Students ,这个Students 包含了名字和性别两个字段,代码如下: from django.db import models class Students(models.Model): GENDER_CHOICES = ( (u'M', u'Male'), (u'F', u'Female'), ) name = models.CharField(max_length=60)

Django models中的null和blank的区别

blank在数据库上存储的是一个空字符串 如需设置字段可以为空:blank=True,默认为blank=False(字段必须填写); null在数据库上表现为NULL,而不是一个空字符串 如需设置字段可以为空:null=True,默认为null=False(字段必须填写); 注意: 日期类型(DateField.TimeField.DateTimeField)和数字类型(IntegerField.DecimalField.FloatField)不能接受空字符串,因此这两种类型类型的字段如果要设置

[Django]models中定义的choices 字典在页面中显示值

问题: 在django的models.py 中,我们定义了一些choices的元组,类似一些字典值,一般都是下拉框或者单多选框,例如 0对应男 1对应女等 class Area(models.Model): Area_Level = ( (0, u'全国'), (1, u'省.直辖市'), (2, u'市.直辖市区'), (3, u'区.县等'), ) areaname = models.CharField(max_length=30,unique=True, verbose_name='区域名

[Django]orm中的外键级联删除

这里的系统环境为django1.6   os为win7 今天有个需求说的是添加一个地区表,然后用外键和几个非常重要的实体表来做关联(地区表作为其他表的外键),写完地区的删除操作的时候,测试了下代码,功能正常.可是眼睛移动到控制台输出的时候傻了 connexesql ->DELETE FROM `mngm_device` WHERE `mngm_device`.`area_id` IN (%s, %s, %s) connexesql ->DELETE FROM `ad_ad` WHERE `ad

关于Django字段类型中 blank和null的区别

blank 设置为True时,字段可以为空.设置为False时,字段是必须填写的.字符型字段CharField和TextField是用空字符串来存储空值的. 如果为True,字段允许为空,默认不允许. null 设置为True时,django用Null来存储空值.日期型.时间型和数字型字段不接受空字符串.所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True. 如果为True,空值将会被存储为NULL,默认为False. 如果想设置

models中字段参数blank和null的用法区别

blank当blank=True时,说明此处的数据可以不填,默认情况下为False,也就意味着默认情况下,所输入的数据不得空,blank是和页面表单有关,在页面需要输入参数的时候,如果在models里面定义了blank=True时,那么这个参数是可以不填写的,如果是默认的话,如果没有填写,则会提示错误. null当null=True时,也就是说如果没有填写数据,此处用NULL来储存空值,默认的是null=False. 总结blank主要是用在CharField, TextField,这两个字符型

Django之admin中管理models中的表格

Django之admin中管理models中的表格 django中使用admin管理models中的表格时,如何将表格注册到admin中呢? 具体操作就是在项目文件夹中的app文件夹中的admin中注册需要管理的表格即可,具体操作如下: admin.py中写入如下代码: 完成以上操作即可登录admin中进行界面化操作这些表格了. 原文地址:https://www.cnblogs.com/ZN-225/p/9861285.html

django 将原本数据库中的表导入models中

django 将原本数据库中的表导入models中 连接mysql数据库(创建app,修改settings配置,使用pymysql连接mysql数据库) 根据数据库原有的数据生成对应的models模型文件 生成模型文件 python3 manage.py inspectdb 将模型文件导入app中 python3 manage.py inspectdb > app名/models.py 原文地址:https://www.cnblogs.com/lucky75/p/11380648.html

UUIDField在Django Model中的使用经验

今天下午在将数据库从旧库导入到新库时,完成后发现Django网站无法打开,报"ValueError, badly formed hexadecimal UUID string",最终定位到原因是一个UUIDField类型字段的值为0,造成Django无法将0验证为UUID类型,从而引发ValueError异常.现总结UUIDField在Django Model中的使用经验如下. 在Django中UUIDField类型的字段可以作为主键(主键是绝对不可能为NULL值的)使用,这个是丝毫没