django 如果不指定缺省值,则无法向table_name添加不可为空的字段'name

rdlzhqv9  于 2023-01-18  发布在  Go
关注(0)|答案(2)|浏览(288)

我在现有模型中添加了以下字段:

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.

我不能设置它的属性为空白=真,空=真,因为这个字段是必须的。我不能设置它的默认值,因为字段必须是唯一的。我还删除了所有以前的数据从该表。如果我试图设置它的默认值在命令提示符,它说plz选择一个有效的选项。如何修复它?

yeotifhr

yeotifhr1#

问题是您可能已经有了记录,但是这个字段是新的和唯一的。
这是我的建议:
1.使用blank=Truenull=True
1.使用数据迁移或手动操作,使用唯一名称填充现有记录。
1.在下次迁移中删除blank=Truenull=True

6tr1vspr

6tr1vspr2#

如果不指定默认值,则无法将不可为空的字段“name”添加到table_name。这是因为数据库需要填充现有行。请选择修复方法:1)立即提供一次性默认值(将在此列的所有现有行上设置空值)2)退出并在models.py中手动定义默认值。
解决方案:选择选项1)立即提供一次性默认值(将在此列中所有具有空值的现有行上设置),然后转到您的模型并进行以下更改:名称=型号。字符字段(最大长度=128,空白=真)注意 *:必须删除name(unique = True),因为空名称将不唯一,为了唯一,请使用id作为主键

相关问题