在Django中,我在以下models.py文件中使用manage.py makemigrations
和manage.py migrate
:
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中添加默认值选择一个选项:
为什么我首先没有在初始化时出现这个错误?
答案 0 :(得分:1)
其他人是对的。您应该为该字段设置默认值。
但是有一个技巧可以解决这个问题。但这不是一个好方法......只有你别无选择。
1.评论你的所有表格
2.运行makemigrations
和migrate
3.取消注释你的表格
4.2。再次运行makemigrations
和migrate
答案 1 :(得分:1)
image1=models.ImageField(upload_to='app/image12',help_text="hi",***null=True***)
在字段中设置'null = True' 存储数据库后更改模型时就会发生这种情况
答案 2 :(得分:0)
如果你想让它在没有默认值的情况下不可为空。 您必须在创建迁移文件时为同一字段提供值。这就是为什么它要求选项。键入" 1"在终端中使用python manage.py makemigrations,然后为以前保存的行(如果有)提供字段值。
如果有帮助,请告诉我。
答案 3 :(得分:0)
就我而言,我遇到了同样的问题:
关注警报:
...对家人的不可为空的字段“评论” ...
只需在模型家族的字段注释中添加一个attr:
default=''
答案 4 :(得分:0)
您可以添加以下内容:default=None
或default="something"
或add null=True
,blank=True
。