Django:没有默认值

时间:2017-09-05 12:43:33

标签: django null field

在Django中,我在以下models.py文件中使用manage.py makemigrationsmanage.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中添加默认值选择一个选项:

为什么我首先没有在初始化时出现这个错误?

5 个答案:

答案 0 :(得分:1)

其他人是对的。您应该为该字段设置默认值。 但是有一个技巧可以解决这个问题。但这不是一个好方法......只有你别无选择。
1.评论你的所有表格 2.运行makemigrationsmigrate
3.取消注释你的表格 4.2。再次运行makemigrationsmigrate

答案 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=Nonedefault="something"add null=Trueblank=True