10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Django モデルのテーブル名とカラム名を同時に変更の手順

Last updated at Posted at 2016-04-26

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
10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?