Django CharField空白vs默认为空

Mat*_*imB 7 python django django-models

Django应用程序中这两个字段有什么区别?我应该期待什么样的行为?

field_a = CharField(max_length=50, verbose_name='field_a', blank=True)
field_b = CharField(max_length=50, verbose_name='field_b', blank=True, default='')
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 14

如果default没有给出值,则CharField根据以下代码使用空字符串(取自django/db/models/fields/__init__.py):

def get_default(self):
    """
    Returns the default value for this field.
    """
    if self.has_default():
        if callable(self.default):
            return self.default()
        return self.default
    if (not self.empty_strings_allowed or (self.null and
               not connection.features.interprets_empty_strings_as_nulls)):
        return None
    return ""
Run Code Online (Sandbox Code Playgroud)

所以他们应该表现得一样.

  • @Kye,我不明白你为什么提到“null=True”。 (2认同)