在 Django 中迁移到数据库时收到错误消息
I'm getting an error message when making migration to db in django
大家好,我正在做一个 Django 教程,我错过了讲师在 models.py 中所做的更改,所以我修复了它,但是当尝试迁移到数据库时,它给了我一个我不知道的代码不明白或者我不知道该怎么做,这是它说的:
(tonyto) PS E:\web-dev\Python\Django1\myappito> python manage.py makemigrations
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 let me add a default in models.py
他们就是这样
name: models.CharField(max_length=100) details: models.CharField(max_length=500)
这就是我更新它的方式
name: models.CharField(max_length=100) details: models.CharField(max_length=500)
提前谢谢你。
第一种方法
- 这是因为您 运行 在创建的每个字段上进行迁移,因此之前创建的填充不接受空值,因此您想在您的情况下提供默认值,它是字符串值
- 您可以选择第一个选项,但答案是“默认”并带有引号以将其理解为字符串
第二种方案
删除迁移文件夹中创建的最新文件并
将您的模型修改为
'''
name = models.CharField(max_length=100,null=True)
details = models.CharField(max_length=500, null=True)
'''
然后运行再次迁移
python manage.py makemigration
python manage.py migrate
then go back to model again and remove null from each field and run
python manage.py makemigration
python manage.py migrate
这是因为您正在尝试迁移一个不能为空的模型字段,但由于它不能为空,因此需要一个默认值,以便 django 可以用该空值替换所有现有行场.
你有两个选择:
手动提供默认值,django会用这个
替换该字段的所有空值
在模型中设置一个默认值,例如:
number = models.IntegerField(default=1)
string = models.CharField(default='')
大家好,我正在做一个 Django 教程,我错过了讲师在 models.py 中所做的更改,所以我修复了它,但是当尝试迁移到数据库时,它给了我一个我不知道的代码不明白或者我不知道该怎么做,这是它说的:
(tonyto) PS E:\web-dev\Python\Django1\myappito> python manage.py makemigrations
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 let me add a default in models.py
他们就是这样
name: models.CharField(max_length=100) details: models.CharField(max_length=500)
这就是我更新它的方式
name: models.CharField(max_length=100) details: models.CharField(max_length=500)
提前谢谢你。
第一种方法
- 这是因为您 运行 在创建的每个字段上进行迁移,因此之前创建的填充不接受空值,因此您想在您的情况下提供默认值,它是字符串值
- 您可以选择第一个选项,但答案是“默认”并带有引号以将其理解为字符串
第二种方案
删除迁移文件夹中创建的最新文件并 将您的模型修改为
'''
name = models.CharField(max_length=100,null=True)
details = models.CharField(max_length=500, null=True)
'''
然后运行再次迁移
python manage.py makemigration python manage.py migrate then go back to model again and remove null from each field and run python manage.py makemigration python manage.py migrate
这是因为您正在尝试迁移一个不能为空的模型字段,但由于它不能为空,因此需要一个默认值,以便 django 可以用该空值替换所有现有行场.
你有两个选择:
手动提供默认值,django会用这个
替换该字段的所有空值在模型中设置一个默认值,例如:
number = models.IntegerField(default=1)
string = models.CharField(default='')