2015-01-24 5 views
1

Я с FK в некоторой моделиДжанго миграции изменить тип поля

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

мне нужно изменить его IntegerField так он будет выглядеть

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

Как добавить новую миграцию без действительно что-то меняет в БД?

ответ

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 -> b и b -> b_id, но данные в этом столбце будет сохранится.

Смежные вопросы