【问题标题】:Django migrations change field typeDjango 迁移更改字段类型
【发布时间】:2015-01-24 12:00:28
【问题描述】:
我对某个模型有 FK
class A(models.Model):
b = models.FK(to=B)
我需要将其更改为 IntegerField,以便它看起来像
class A(models.Model):
b_id = models.IntegerField()
如何添加新的迁移而不真正更改数据库中的任何内容?
【问题讨论】:
标签:
django
django-models
django-migrations
【解决方案1】:
创建将更改字段类型然后重命名字段的迁移:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('app', '000X_the_name_of_prev_migration'),
]
operations = [
migrations.AlterField(
model_name='a',
name='b',
field=models.IntegerField(),
preserve_default=True,
),
migrations.RenameField(
model_name='a',
old_name='b',
new_name='b_id',
),
]
实际上在 SQL 级别会有两个重命名列 b_id -> b 和 b -> b_id 但该列中的数据将被保留。