在这的部分南方文档中,它说
“有些列没有默认定义”。
,当使用syncdb时,哪个模型字段获得默认值,哪些不使用?(南方文档指出,对于BooleanField,默认值是False)
我已经搜索了Django模型相关文档的模型/ref/和/topic/部件,但是找不到这个。这在什么地方有记录吗?
发布于 2014-01-11 10:08:47
我在文档中也找不到答案,所以我检查了模型字段的源代码。除BinaryField外,每个模型字段的“默认”都是由此方法提供的:
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 ""因此,大多数字段类型的“默认”取决于get_prep_value如何处理空字符串。get_prep_value的各种实现可以在同一源文件中找到。看起来大多数字段都没有“缺省值”,因为大多数get_prep_value实现都不知道如何处理空字符串。该规则的显著例外是BooleanField (默认为False)、CharField (默认为空字符串)和TextField (默认为空字符串)。
我希望这能帮到你!
https://stackoverflow.com/questions/17040166
复制相似问题