我的模型中有一个字段,像这样的name = models.CharField(max_length=100, unique=True),但是现在这个表/模型有了大量的数据,需要将True更改为False,但不必再删除表并重新分解它,,如何才能做到呢?
发布于 2016-05-05 19:18:12
使用以下方法生成新的迁移:
python manage.py makemigrations上面的内容将检测到对模型的更改,并生成一个迁移类,但尚未执行任何sql。
若要生成/将sql应用于数据库:
python manage.py migrate如果希望在更新db之前看到将执行的sql,请在migrate之前执行此操作。
python sqlmigrate {app_label} {migration_module}编辑:上面的将您的表重命名为__old后缀,创建一个新表并将数据从旧表插入到新表,然后删除原始表。所以不确定这是不是你想要的..。
另一种选择是使用普通sql实现您想要的结果:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;但是请记住,为了使您的迁移为新的运行更新,请找到声明您的字段为唯一的迁移类,并将unique=True更改为unique=False。如果需要更新任何其他服务器,您也可以在那里运行drop约束命令,因此所有内容都是同步的。
发布于 2016-05-05 19:18:21
只需将模型中的值更改为False,然后进行迁移和迁移。这将将DB中的所有项更新为新值。这是如果您使用更新的版本与南方,而不是使用syncdb。
https://stackoverflow.com/questions/37058456
复制相似问题