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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM