Django モデルのテーブル名とカラム名を同時に変更の手順
変更前
class AAA(models.Model):
name = models.CharField()
class Meta:
db_table = 'aaa'
class BBB(models.Model):
name = models.CharField()
aaa = models.ForeignKey(AAA)
変更後
class CCC(models.Model):
name = models.CharField()
class Meta:
db_table = 'ccc'
class FooTwo(models.Model):
name = models.CharField()
ccc = models.ForeignKey(CCC)
修正手順
(1). models.py修正
class CCC(models.Model): <- AAAをCCCに修正
name = models.CharField()
class Meta:
db_table = 'ccc' <- aaaをcccに修正
class FooTwo(models.Model):
name = models.CharField()
aaa = models.ForeignKey(CCC) <- ForeignKey(AAA)をForeignKey(CCC)に修正
(2). schemammigration後migrationファイルを以下に修正
def forwards(self, orm):
db.rename_table('aaa', 'ccc')
def backwards(self, orm):
pass
(3). migrate
- テーブル名が変更されたかを確認する AAA -> CCC
(4). models.py修正
class CCC(models.Model):
name = models.CharField()
class Meta:
db_table = 'ccc'
class FooTwo(models.Model):
name = models.CharField()
ccc = models.ForeignKey(CCC) <- aaaをcccに修正
(5). schemammigration後migrationファイルを以下に修正
def forwards(self, orm):
db.rename_column('ccc', 'aaa', 'ccc')
def backwards(self, orm):
pass
(6). migrate
- カラム名が変更されたかを確認する aaa -> ccc