2015-11-18 112 views
1

Django應用程序中這兩個字段有什麼區別?我應該期待什麼行爲?Django CharField空白與默認空

field_a = CharField(max_length=50, verbose_name='field_a', blank=True) 
field_b = CharField(max_length=50, verbose_name='field_b', blank=True, default='') 

回答

5

如果default值沒有給出,空字符串根據下面的代碼(從django/db/models/fields/__init__.py取)用於CharField

def get_default(self): 
    """ 
    Returns the default value for this field. 
    """ 
    if self.has_default(): 
     if callable(self.default): 
      return self.default() 
     return self.default 
    if (not self.empty_strings_allowed or (self.null and 
       not connection.features.interprets_empty_strings_as_nulls)): 
     return None 
    return "" 

所以他們應該做的一樣。

+0

這個。一般基於文本的字段('CharField','TextField'.etc)的最佳做法是使用'CharField(空白= True)'。不要使用'CharField(null = True)'。 –

+0

我明白了,但是如果我從field_b中刪除default =「」,django會生成一個遷移。你能解釋爲什麼嗎? – MatheusJardimB

+0

@Kye,我不明白你爲什麼提到'null = True'。 – falsetru