同じ Django アプリであまりにも多くのモデルを作成するというばかげた間違いを犯したため、3 つの異なるモデルに分割したいと考えています。問題は、2 つの顧客のサイトで既に運用中のデータがあるため、実行するスキーマ/データの移行を慎重に計画する必要があることです (私は django-south を使用しています)。どのように進めたらよいかわからないので、アドバイスをいただければ幸いです。
(関係がある場合は、Ubuntuサーバー12.4 LTSでPostgreSQLを使用しています)
を使用することを考えましdb.rename_table
たが、外部キーをこれらのモデル (古いものから新しいものへ) に正しく更新する方法がわかりません - データベース レベルでは関係ありません (テーブルの名前変更は既にカバーされているため) が、ORM レベルではそうではありません.
更新: それについて考えた後、 programmmers.SE でこの質問をした後、物事をシンプルに保ち、製品のメジャー バージョン間の移行について心配しないことにしました。短期的には、モデルを古いアプリに保持しながら、ダニエル・ローズマンが提案したようにdb.rename_table
使用しながら、新しい名前に一致させるために使用します。db_table
メジャー バージョンにアップグレードするときは、新しいアプリに切り替えて、すべての移行を完全に破棄します (そのため、新しいバージョンを新しくインストールすると、過去のすべての移行を行うのではなく、データベースが「そのまま」作成されます)。