2017-02-26 16 views

回答

2

我知道你已經鏈接了文檔,但我明確表達了對於遇到同一問題的任何人。您的標題問題的答案在文檔中明確且清楚地顯示 - 默認情況下都是False。如果您希望該字段爲blank=True,那麼是的,您需要在每個字段上手動指定。

空白是形式:

如果爲True,字段允許爲空。默認值是False。

請注意,這與null不同。 null純粹是與數據庫相關的 ,而空白與驗證相關。如果一個字段有 blank = True,表單驗證將允許輸入一個空值。如果 字段具有空白= False,則該字段將是必需的。

如果在該字段中沒有任何內容保存記錄,Null就是存儲數據庫的內容。此字段的屬性爲null=False

如果爲True,Django將在數據庫中將空值存儲爲NULL。默認值是False。

避免在基於字符串的字段(如CharField和 TextField)上使用null,因爲空字符串值將始終以空字符串存儲爲空 而不是NULL。如果基於字符串的字段的值爲空= True,那麼 表示它有兩個可能的「無數據」值:NULL和空字符串 。在大多數情況下, 「沒有數據」有兩個可能的值是多餘的,Django慣例是使用空字符串,而不是NULL。

對於這兩種非基於字符串基於字符串和領域,你也需要 如果你希望允許在形式的空值來設置空白=真,作爲 空參數隻影響數據庫存儲(見空白) 。

有很多場合,當你想要的形式爲空白,但數據庫條目是not Null - 例如如果you were specifying your own custom slug on model save

當然,這也意味着您從主Field類派生的任何自定義Field將具有相同的默認行爲。如果真的讓你感到困擾,你可以用你想要的行爲來覆蓋Field類,但是對於那些追隨你的人來說,調試會非常麻煩。

+0

「_Avoid在基於字符串的字段(如CharField和TextField)上使用null,因爲空字符串值將始終以空字符串存儲,而不是NULL_」。我想更好地理解這句話。她的意思是我最好避免使用'null = True',因爲如果我想允許在基於字符串的字段中保存「無數據」值,那麼僅僅是保存空字符串? – Caco

+1

是的,否則你可以將Null和''''作爲沒有數據的值。如果你爲這些字段保留'null = False',並且不保存一個值給它們,那麼這個值會自動成爲一個空字符串'''''。 – Withnail

相關問題