【问题标题】: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 -> bb -> b_id 但该列中的数据将被保留。

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 1970-01-01
      • 2016-01-01
      • 2019-02-03
      • 1970-01-01
      • 2015-02-07
      • 2015-01-22
      • 2013-11-19
      • 2013-04-19
      相关资源
      最近更新 更多