在南方文档的this部分中,它说
“某些列没有默认定义”。
使用syncdb时哪些模型字段获取默认值?哪些模型字段没有?(南方文档说BooleanField
默认值为False
)< / p>
我搜索过Django模型相关文档的model / ref /和/ topic /部分,但找不到这个。这是在某处记录的吗?
答案 0 :(得分:1)
我在文档中找不到答案,所以我检查了source code for 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
处理空字符串的方式决定。可以在same source file中找到get_prep_value
的各种实现。看起来大多数字段都没有“默认默认值”,因为get_prep_value
的大多数实现都不知道如何处理空字符串。该规则的值得注意的例外是BooleanField
(默认为False),CharField
(默认为空字符串)和TextField
(默认为空字符串)。
我希望这有帮助!