我發現,當我通過表單插入任何字符串form field
它捕獲它作爲一個空字符串''
。Django的空和空字符串
但是,當我通過表單插入整數form field
的任何內容時,它將其捕獲爲[null]
。
這是一個很好的做法嗎?字符串應該是null
以及db?
我發現,當我通過表單插入任何字符串form field
它捕獲它作爲一個空字符串''
。Django的空和空字符串
但是,當我通過表單插入整數form field
的任何內容時,它將其捕獲爲[null]
。
這是一個很好的做法嗎?字符串應該是null
以及db?
這是一個很好的做法。如果允許字符串爲null
,則會有兩種方法獲得空字符串:null
和""
。這給你多個值來檢查,這是低效和雜亂。
這是一個Django convention,但較好的方法是所有的應用程序,除非你有需要null
到意味着不同的東西比""
。
我認爲該字符串應該也是NULL,但取決於您的應用程序,請參閱MySQL, better to insert NULL or empty string?。
如果你想存儲的NULL一個空場,在添加問題null=True
到現場。見https://docs.djangoproject.com/en/dev/ref/models/fields/#null
這取決於field.empty_strings_allowed
屬性。
有些字段會覆蓋到False
。但CharField
保持它True
,從而使Field._get_default作爲默認返回空字符串 - 即使blank=True
。將None
作爲默認值的唯一方法是在字段上使用null=True
。
所以,如果你有db中的字段,它永遠不應該爲空,並且不允許空格永遠不會放在那裏。 objects.create
。您需要在模型save
方法中輸入self.full_clean()
或其他驗證。
如果在我的數據庫中,我將字段設置爲ALLOW NULL,那麼我希望None被存儲爲NULL,而不是空字符串。 Django擁有它的約定沒問題,但Django不一定是訪問數據庫的唯一系統。如果一個單獨的應用程序可以存儲NULL,那麼你最終不得不檢查null與空字符串。然而,一個簡單的「if not value」將在Python中檢查兩者。 – six8
這可能是'django練習',但在數據庫中通常使用空字符串來表示缺失的數據是不好的做法。這是NULL的用途。我真的希望這不是django的標準做法。 – Darren
這不是一個很好的做法,它是在早期引入的慣例,因爲不必在模板中處理None,也不必將空白表單域清理爲None。這是一個快速完成工作的捷徑,但我們現在應該將其作爲一種良好的實踐證明其合理性,因爲懶惰或缺乏時間讓我們獲得了這種「實踐」。這就是爲什麼我們現在有2個字段屬性來處理這個東西。 –