2017-11-02 7 views
0

私は私のモデルでは、このフィールドを持っている:OperationalErrors - いいえ、カラムジャンゴ - のForeignKey

customer = models.ManyToManyField(Customer) 

何らかの変化に、私は私がこれまでの関係を変更する必要があること実現:

customer = models.ForeignKey(Customer) 

私はmakemigrations app_namemigrateを繰り返し実行しようとしましたが、それでもエラーが発生します。私はまた、管理サイトでモデルの既存のデータを削除しようとしました。

答えて

1

ManyToManyFieldからForeignKeyへの単純な変更は、データ損失なしでは不可能です。移行の問題は、を不可能な移行をより小さな移行に分割することで解決できます。例えばデータが重要な場合

A)のデータ損失を伴う:

  • makemigrations
  • のみという、部分的なデータの損失とのForeignKey
  • makemigrations

B)を追加するのManyToManyFieldを削除ManyToManyFieldの最初の要素は、すべてのオブジェクトに対してForeignKey:
に変換されます。ForeignKeyを他の名前(makemigrations,makemigrations --empty)で追加し、Data Migrationに編集して列データをコピーし、ManyToManyFieldを削除します。 makemigrations,makemigrations --empty, edit it to rename the field

関連する問題