Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django迁移更改字段类型_Django_Django Models_Django Migrations - Fatal编程技术网

Django迁移更改字段类型

Django迁移更改字段类型,django,django-models,django-migrations,Django,Django Models,Django Migrations,我对某个模特有一个FK class A(models.Model): b = models.FK(to=B) 我需要把它改成IntegerField,这样看起来 class A(models.Model): b_id = models.IntegerField() 如何添加新迁移而不真正更改数据库中的任何内容?创建一个迁移,该迁移将更改字段类型,然后重命名字段: # -*- coding: utf-8 -*- from __future__ import unicode_li

我对某个模特有一个FK

class A(models.Model):
    b = models.FK(to=B)
我需要把它改成IntegerField,这样看起来

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

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

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

# -*- 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
进行两次重命名,但此列中的数据将被保留