我对南方迁移方案和数据的概念模糊不清,但现在我想要做一些更先进的事情;
我有一个模型,其中包含一个boolfield指示状态(活动/非活动),现在我需要使用整数字段添加其他可能性。使用南方计划移民,这种变化本身非常简单。
问题是我需要将现有对象(大约400+)中的状态转换为整数(0表示false,1表示true)。
这是否可能,或者我是否需要寻找其他方式?
答案 0 :(得分:0)
您使用什么数据库系统? mySQL? PostgreSQL? SQLite? ..最简单的迁移数据是我的SQL补丁。
例如,使用PostgreSQL:
-- DROP DEFAULT IF THERE IS ONE
ALTER TABLE app_name.model_name ALTER mycolumn TYPE integer USING CASE WHEN mycolumn=FALSE THEN 0 ELSE 1 END;
-- SET A NEW DEFAULT IF THERE WAS ONE
答案 1 :(得分:0)
我遇到类似PostgreSQL的问题,并且这样改变了迁移有助于:
def forwards(self, orm):
# Changing field 'SomeModel.status'
hlp = db.alter_string_set_type
db.alter_string_set_type = 'ALTER COLUMN %(column)s TYPE %(type)s USING %(column)s::integer::smallint'
db.alter_column('someapp_somemodel', 'status', self.gf('django.db.models.fields.PositiveSmallIntegerField')())
db.alter_string_set_type = hlp
def backwards(self, orm):
# Changing field 'SomeModel.status'
hlp = db.alter_string_set_type
db.alter_string_set_type = 'ALTER COLUMN %(column)s TYPE %(type)s USING %(column)s::integer::boolean'
db.alter_column('someapp_somemodel', 'status', self.gf('django.db.models.fields.BooleanField')())
db.alter_string_set_type = hlp
(当然对于MySQL语法会有所不同)
答案 2 :(得分:-1)
阅读完文档后,这非常简单(doh!)。
schemamigration - 添加intfield datamigration - 如果bool>> int = 1,else int = 0 schemamigration - 删除boolfield