我在现有模型中添加了以下字段:
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选择一个有效的选项。如何修复它?
2条答案
按热度按时间yeotifhr1#
问题是您可能已经有了记录,但是这个字段是新的和唯一的。
这是我的建议:
1.使用
blank=True
、null=True
1.使用数据迁移或手动操作,使用唯一名称填充现有记录。
1.在下次迁移中删除
blank=True
和null=True
6tr1vspr2#
如果不指定默认值,则无法将不可为空的字段“name”添加到table_name。这是因为数据库需要填充现有行。请选择修复方法:1)立即提供一次性默认值(将在此列的所有现有行上设置空值)2)退出并在models.py中手动定义默认值。
解决方案:选择选项1)立即提供一次性默认值(将在此列中所有具有空值的现有行上设置),然后转到您的模型并进行以下更改:名称=型号。字符字段(最大长度=128,空白=真)注意 *:必须删除name(unique = True),因为空名称将不唯一,为了唯一,请使用id作为主键