[解決済み] 2つのDjangoアプリ間でモデルを移動させる方法 (Django 1.7)
2022-05-11 21:41:01
質問
しかし、Django を使い始めてから、私のプロジェクトレイアウト、主にモデルの構造がひどいと思うようになりました。
私は主に1つのアプリにモデルを保持しており、本当はこれらのモデルのほとんどは、それぞれ個別のアプリにあるべきものです。私はこれを解決し、南でそれらを移動しようとしましたが、私はそれがトリッキーで外部キーなどのために本当に難しいことがわかりました。
しかし、Django 1.7ではマイグレーションがサポートされるようになったので、これを行う良い方法があるのでしょうか?
どのように解決するのですか?
データ消失の恐れがあるため、古い回答は削除しています。というのも ozanさんがおっしゃるには 2つのマイグレーションをそれぞれのアプリで作成することができます。この記事の下のコメントは、私の古い答えを参照してください。
1つ目のマイグレーションで、1つ目のアプリからモデルを削除します。
$ python manage.py makemigrations old_app --empty
これらの操作を含むようにマイグレーションファイルを編集します。
class Migration(migrations.Migration):
database_operations = [migrations.AlterModelTable('TheModel', 'newapp_themodel')]
state_operations = [migrations.DeleteModel('TheModel')]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=database_operations,
state_operations=state_operations)
]
2回目のマイグレーションは、1回目のマイグレーションに依存し、2番目のアプリに新しいテーブルを作成します。モデルコードを2番目のアプリに移動した後
$ python manage.py makemigrations new_app
で、migration ファイルを以下のように編集します。
class Migration(migrations.Migration):
dependencies = [
('old_app', 'above_migration')
]
state_operations = [
migrations.CreateModel(
name='TheModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
'db_table': 'newapp_themodel',
},
bases=(models.Model,),
)
]
operations = [
migrations.SeparateDatabaseAndState(state_operations=state_operations)
]
関連
-
ピロウズ画像色処理の具体的な活用方法
-
Python Decorator 練習問題
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonでファイルを移動するには?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] 2つのリストの差を取得する
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Django Southでの後方移行について
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Python LeNetネットワークの説明とpytorchでの実装
-
Python 入出力と高次代入の基礎知識
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] モデルとリレーションシップフィールドの名前を変更するためのDjangoマイグレーション戦略