1. 程式人生 > >Django models中關於blank與null的補充說明

Django models中關於blank與null的補充說明

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 一條記錄的時候。直觀的看到就是該欄位不是粗體