首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将unique=True从model字段更改为unique=False

将unique=True从model字段更改为unique=False
EN

Stack Overflow用户
提问于 2016-05-05 19:10:01
回答 2查看 2.7K关注 0票数 3

我的模型中有一个字段,像这样的name = models.CharField(max_length=100, unique=True),但是现在这个表/模型有了大量的数据,需要将True更改为False,但不必再删除表并重新分解它,,如何才能做到呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-05 19:18:12

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

代码语言:javascript
复制
python manage.py makemigrations

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

若要生成/将sql应用于数据库:

代码语言:javascript
复制
python manage.py migrate

如果希望在更新db之前看到将执行的sql,请在migrate之前执行此操作。

代码语言:javascript
复制
python sqlmigrate {app_label} {migration_module}

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

另一种选择是使用普通sql实现您想要的结果:

代码语言:javascript
复制
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

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

票数 2
EN

Stack Overflow用户

发布于 2016-05-05 19:18:21

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37058456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档