从我的模型字段

时间:2016-05-05 19:10:02

标签: django django-models

我的模型中有一个字段与此name = models.CharField(max_length=100, unique=True)类似,但现在该表/模型包含大量数据,需要将True更改为False,但无需删除桌子再次打开它,我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用以下方法生成新迁移:

python manage.py makemigrations

以上内容将检测模型的更改并生成迁移类,但尚未执行任何sql。

生成/应用sql到db:

python manage.py migrate

如果你想在更新数据库之前看到将执行的sql,请在migrate之前执行此操作:

python sqlmigrate {app_label} {migration_module}

编辑:以上内容将使用后缀__old重命名您的表,创建一个新表并将旧数据插入新表中,然后删除原始表。所以不确定这是不是你想要的......

另一种选择是使用普通的sql来实现你想要的目标:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

但请记住,为了使新版本的迁移更新,请找到将您的字段声明为唯一的迁移类,并将unique=True更改为unique=False。如果需要更新任何其他服务器,您也可以在那里运行drop constraint命令,以便一切都同步。

答案 1 :(得分:1)

只需在模型中将值更改为False,然后进行迁移和迁移。这会将DB中的所有项目更新为新值。如果您使用较新版本的South而不使用syncdb。