添加新列时如何设置现有条目的默认值?

时间:2015-05-26 10:37:38

标签: django django-1.7

我的Django应用中有一个模型,需要添加一个新的BooleanField列。此列永远不应为null - 相反,我希望所有现有条目都将此字段设置为False

我该怎么做?如果我只是添加新字段并设置default = False,则会导致OperationalError: no such column错误。

4 个答案:

答案 0 :(得分:2)

您需要使用Django's migrations,这样您就可以将该字段添加到数据库中。

简而言之,您对模型进行了更改,使用manage.py makemigrations创建了迁移,然后使用manage.py migrate运行。

答案 1 :(得分:0)

在添加新列后,您需要迁移数据库。就像在第一次创建数据库时使用syncdb命令执行“create table”命令一样,迁移会将“alter table”更改写入数据库。

https://docs.djangoproject.com/en/1.8/topics/migrations/

答案 2 :(得分:0)

事实证明我错过了migrate命令需要应用名称。所以,我必须像这样运行命令:

manage.py makemigrations app_name

答案 3 :(得分:-1)

默认情况下,BooleanField列为False,您无需指定任何内容。只需运行python manage.py migrate。它应该工作。