在南方文档的这一部分中,它说
“某些列没有定义默认值”。
使用 syncdb 时哪些模型字段获得默认值,哪些没有?(South 文档说BooleanField
默认值为False
)
我已经搜索了 Django 模型相关文档的模型 /ref/ 和 /topic/ 部分,但找不到这个。这是在某处记录的吗?
在南方文档的这一部分中,它说
“某些列没有定义默认值”。
使用 syncdb 时哪些模型字段获得默认值,哪些没有?(South 文档说BooleanField
默认值为False
)
我已经搜索了 Django 模型相关文档的模型 /ref/ 和 /topic/ 部分,但找不到这个。这是在某处记录的吗?
我在文档中也找不到答案,所以我检查了model fields 的源代码。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
(默认为空字符串)。
我希望这有帮助!