我在现有模型中添加了以下字段:
name = models.CharField(max_length=128, unique=True)
但是应用迁移时出现以下提示:
It is impossible to add a non-nullable field 'name' to table_name without specifying a default. This is because the database needs something to populate existing rows.
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit and manually define a default value in models.py.
我无法将其属性设置为blank=True、null=True,因为此字段是必须的。我无法设置它的默认值,因为该字段必须是唯一的。我还删除了该表中以前的所有数据。 如果我尝试在命令提示符中设置它的默认值,它会说请选择一个有效的选项。 怎么解决?
问题是您可能已有记录,但该字段是新的且唯一的。
这是我建议做的:
blank=True
、null=True
blank=True
和 null=True
在不指定默认值的情况下,不可能将不可为 null 的字段“name”添加到 table_name 中。这是因为数据库需要一些东西来填充现有的行。 请选择修复: 1) 现在提供一次性默认值(将在该列具有空值的所有现有行上设置) 2) 退出并在 models.py 中手动定义默认值。
解决方案: 选择选项 1) 立即提供一次性默认值(将在该列为空值的所有现有行上设置),然后转到您的模型并进行以下更改: 名称 = models.CharField(max_length=128, 空白=True) 注意*:您必须删除 name(unique = True),因为空白名称不会是唯一的,为了唯一性,请使用 id 作为主键
注释引发错误的整个表并运行 makemigrations,这将从迁移中删除该表。然后,取消注释该表并重新运行 makemigrations,这将解决您的问题。