在Django中我用下面的models.py文件manage.py makemigrations
和manage.py migrate
不可为空场:Django的:没有默认
class Family(models.Model):
comment1 = models.CharField(max_length=80)
#comment2 = models.CharField(max_length=80)
这个初始化成功后,我改变了models.py到(我只是取消注释这基本上是其他模型场的副本)的新模式场:
class Family(models.Model):
comment1 = models.CharField(max_length=80)
comment2 = models.CharField(max_length=80)
现在,当我尝试makemigrations
我再次碰到下面的错误:
您尝试添加不可为空场“注释”家庭不 默认;我们不能这样做(数据库需要一些东西来填充 现有的行)。
请选择修复:
1)提供一次性默认现在 (将所有现有的行与空值此列集)
2)退出,并让我在models.py中添加一个默认值选择一个选项:
为什么我在初始化初始化时没有得到这个错误?
因为您是从头开始创建表。现在,正如错误明确指出的那样,数据库需要一些东西来填充现有的行。 –
但没有现有的行。就像我初始化时一样! – user3182532
好吧我想我明白了。尽管没有现有的行,原则上可能存在。然后Django不知道如何保存现有行的“comment2”,因为它不能将它们保存为null,并且它们没有值。在Django知道的第一次迁移中:我创建了一个表,因此没有以前的数据,因此null = False +没有默认值是可以的。用户将只能保存具有“comment1”值的对象,但这是他的问题。 – user3182532