1

我对某些模型有 FK

class A(models.Model):
    b = models.FK(to=B)

我需要将其更改为 IntegerField 所以它看起来像

class A(models.Model):
    b_id = models.IntegerField()

如何在不真正更改数据库中的任何内容的情况下添加新的迁移?

4

1 回答 1

2

创建一个迁移,它将更改字段类型,然后重命名该字段:

# -*- 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 -> bb -> b_id该列中的数据将被保留。

于 2015-01-24T12:17:58.870 回答