Django字段的默认值是什么?

时间:2014-11-14 18:50:27

标签: python django-models

根据Django Model文档,nullblank选项默认为False。那么,如果我没有明确提供,IntegerField的默认值是多少?此外,CharField和其他人也会有所帮助。

1 个答案:

答案 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 ""

由于NoneIntegerFieldempty_strings_allowed = False,在创建或保存之后,您将获得ValidationError(),因为值不在int()

至于CharField,你会得到""空字符串,因为CharFieldempty_strings_allowed = True

P.S。避免在null=TrueCharField上使用TextField,因为在Django文档中说

  

避免在基于字符串的字段(如CharField和)上使用null   TextField,因为空字符串值将始终存储为空   字符串,而不是NULL。如果基于字符串的字段具有null = True,那么   意味着它有两个可能的“无数据”值:NULL,空   串。在大多数情况下,拥有两个可能的值是多余的   “没有数据;”Django约定是使用空字符串,而不是NULL。