根据Django Model文档,null
和blank
选项默认为False
。那么,如果我没有明确提供,IntegerField
的默认值是多少?此外,CharField
和其他人也会有所帮助。
答案 0 :(得分:3)
正如我们在Field方法中看到的那样
def has_default(self):
"""
Returns a boolean of whether this field has a default value.
"""
return self.default is not NOT_PROVIDED
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 ""
由于None
,IntegerField
为empty_strings_allowed = False
,在创建或保存之后,您将获得ValidationError()
,因为值不在int()
至于CharField,你会得到""空字符串,因为CharField
有empty_strings_allowed = True
P.S。避免在null=True
和CharField
上使用TextField
,因为在Django文档中说
避免在基于字符串的字段(如CharField和)上使用null TextField,因为空字符串值将始终存储为空 字符串,而不是NULL。如果基于字符串的字段具有null = True,那么 意味着它有两个可能的“无数据”值:NULL,空 串。在大多数情况下,拥有两个可能的值是多余的 “没有数据;”Django约定是使用空字符串,而不是NULL。