• Django数据库设计中字段为空的方式


    今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空:

     1 class User(models.Model):
     2     username = models.CharField('用户名',max_length=50)
     3     password = models.CharField('密码',max_length=255)
     4     email = models.EmailField('邮箱',null=True)
     5     phone = models.CharField('电话',max_length=11,null=True)
     6 
     7     group = models.ManyToManyField(UserGroup,verbose_name='用户组')
     8 
     9     create_date = models.DateTimeField('创建时间',auto_now_add=True)
    10     update_date = models.DateTimeField('最近修改时间',auto_now=True)

    但当我在使用Django后台管理添加数据时发现还是不能输入空字段,仍然需要输入内容。

    查了资料才知道,在使用Django设计数据库表时,

    如果设置null=True,则仅表示在数据库中该字段可以为空,但使用后台管理添加数据时仍然要需要输入值,因为Django自动做了数据验证不允许字段为空

    如果想要在Django中也可以将字段保存为空值,则需要添加另一个参数:blank=True

    概况来说就是:

    null=True
      数据库中字段可以为空
    blank=True
      django的 Admin 中添加数据时可允许空值
     
    因此,要想实现在Django 后台管理中添加空值,则应该如下设计表:
     1 class User(models.Model):
     2     username = models.CharField('用户名',max_length=50)
     3     password = models.CharField('密码',max_length=255)
     4     email = models.EmailField('邮箱',null=True,blank=True)
     5     phone = models.CharField('电话',max_length=11,null=True,blank=True)
     6 
     7     group = models.ManyToManyField(UserGroup,verbose_name='用户组')
     8 
     9     create_date = models.DateTimeField('创建时间',auto_now_add=True)
    10     update_date = models.DateTimeField('最近修改时间',auto_now=True)
  • 相关阅读:
    es6
    ES6
    ES6
    css3
    滚动穿透的6种解决方案【已自测】
    css特效
    css布局
    css布局
    js
    【消灭代办】第5周
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5610989.html
Copyright © 2020-2023  润新知