-1
移行を実行するために必要なDjangoアプリケーションがあります。ここで私は変更する必要があるものの代表スキーマはません:Djangoの移行で重複する外部キー値が壊れる
class A(Model):
c = ForeignKey(C)
...
class B(Model):
c = ForeignKey(C)
...
class C(Model):
x = CharField()
y = CharField()
z = CharField()
class Meta:
unique_together = (('x', 'y', 'z'),)
z
は、もはや外部キーC
の一意性に関連しています。だから私はフィールドz
を落として、ユニークな要件をちょうどx
とy
に変更するつもりです。
最初に、今後の重複エントリを削除するデータ移行を行う必要があります。とすべてのForeignKeysを修正して、その単一の統合エントリを指すようにする必要があります。
以下の答えで概要を説明するよりも良い方法があるかどうかを確認しています。私は答えには満足していません。なぜならアルゴリズム自体以外には、まだ使用されている外部キーを削除するという安全対策がないからです。 (同様に、私が見落としC
に別の外部キー関係もあります。)
(ジャンゴ1.7 &のPostgres)