今天在做数据库设计的时候,设计了如下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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!