1
根據Django Model文檔,null
和blank
選項默認爲False
。那麼如果我沒有明確提供,那麼IntegerField
的默認值是什麼?此外,CharField
和其他將有所幫助。Django字段的默認值是什麼?
根據Django Model文檔,null
和blank
選項默認爲False
。那麼如果我沒有明確提供,那麼IntegerField
的默認值是什麼?此外,CharField
和其他將有所幫助。Django字段的默認值是什麼?
正如我們在現場方法
def has_default(self):
"""
Returns a boolean of whether this field has a default value.
"""
return self.default is not NOT_PROVIDED
def get_default(self):
"""
Returns the default value for this field.
"""
if self.has_default():
if callable(self.default):
return self.default()
return force_text(self.default, strings_only=True)
if (not self.empty_strings_allowed or (self.null and
not connection.features.interprets_empty_strings_as_nulls)):
return None
return ""
看到這將是None
,因爲empty_strings_allowed = False
的IntegerField
,之後創建或保存你會得到ValidationError()
因爲價值是不int()
爲對於CharField,您將得到「」空字符串,因爲CharField
已有empty_strings_allowed = True
PS避免使用null=True
上CharField
和TextField
作爲在Django文件建立說
避免使用基於字符串的領域,如CharField和 文本字段爲空,因爲空字符串值總是會被存儲爲空 字符串,而不是爲NULL。如果基於字符串的字段的值爲空= True,那麼 表示它有兩個可能的「無數據」值:NULL和空字符串 。在大多數情況下, 「沒有數據」有兩個可能的值是多餘的,Django慣例是使用空字符串,而不是NULL。
我沒有在這裏的django安裝,我不打擾通過源代碼來找出,但IIRC,如果你不提供默認的任何字段的默認值將是'無',這將轉化爲SQL'NULL' - 如果在字段定義中保留'null = False',那麼這當然會在數據庫級別引發異常(至少在任何適當的SQL數據庫上)。但是你最好自己嘗試一下(如果你已經有了一個django項目,這是一件五分鐘的事情)。 – 2014-11-14 19:04:09
@brunodesthuilliers,謝謝。 – norbertpy 2014-11-14 19:09:23