今天在做數據庫設計的時候,設計了如下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)