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

How to set the default value for existing entries when adding a new column?

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

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

您需要使用 Django's migrations,这将允许您将字段添加到数据库。

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

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

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

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

原来我错过了迁移命令需要应用程序名称。所以,我不得不 运行 这样的命令:

manage.py makemigrations app_name