Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django CharField为空vs默认为空_Python_Django_Django Models - Fatal编程技术网

Python Django CharField为空vs默认为空

Python Django CharField为空vs默认为空,python,django,django-models,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='') 如果未给出default值,则根据以下代码(取自django/db/models/fields/\uuuu init

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='')

如果未给出
default
值,则根据以下代码(取自
django/db/models/fields/\uuuu init\uuuu.py
)将空字符串用于
CharField


所以它们的行为应该是一样的。

。一般基于文本的字段(
CharField
TextField
等)的最佳实践是使用
CharField(blank=True)
。不要使用
CharField(null=True)
。我明白了,但是如果我从字段中删除默认值=“”,django将生成一个迁移。你能解释一下原因吗?@Kye,我不明白你为什么提到
null=True
。只要你更改字段定义上的任何参数,Django就会生成迁移,不管它是否对数据库有影响@falsetru:这并不是反对你的回答,只是一个一般性的相关提示,因为OP似乎并没有牢牢把握这个领域。
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 ""