2014-03-02 46 views
0

我想這個問題在Django ORM之外非常相關。由於我正在研究它,所以我會這樣說。我應該使用默認的空字符串還是在Django字段中允許爲空值

說,我有以下領域

content = models.TextField()

一個繼承的模型確實需要它的Django模型抽象類和其他需要它的基礎上選擇(另一場)。我看到有兩條路走:在抽象類

  1. 使用null=True, blank=True,進行必要的條件驗證語句在繼承類

  2. 使用default=''在抽象類,並進行必要的條件驗證

在這種情況下,我想實現兩件事情

  1. 表單驗證應該是有條件的
  2. 數據庫驗證應該是有條件的

哪個更首選的方法?爲什麼不是另一個?

回答

0

從Django文檔:

避免使用基於字符串的領域,如CharField和 文本字段爲空,因爲空字符串值總是會被​​存儲爲空 字符串,而不是爲NULL。如果基於字符串的字段的值爲空= True,那麼 表示它有兩個可能的「無數據」值:NULL和空字符串 。在大多數情況下, 「沒有數據」有兩個可能的值是多餘的,Django慣例是使用空字符串,而不是NULL。

您不必爲默認指定空字符串,因爲這是django用於「無數據」的原因。避免空。我建議您將該字段指定爲空白=真(無空),並在表單級執行驗證。

相關問題