問題タブ [django-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
50 参照

django - django 1.7のdjango south internal db functions

次の内部 db コマンドを使用していたプロジェクトがあり、の新しい移行Southで同じことを行う方法を誰かが知っているかどうか疑問に思っていました。django 1.7

ありがとう

0 投票する
32 に答える
127361 参照

python - Django 1.7 - makemigrations が変更を検出しない

タイトルが示すように、移行が機能していないようです。

アプリはもともと 1.6 未満だったので、最初は移行が行われないことを理解しています。実際に実行すると、次のようpython manage.py migrateになります。

のモデルに変更を加えてもmyapp、予想どおり未移行と表示されます。

しかし、実行すると次のpython manage.py makemigrations myappようになります。

コマンドを何をどのように実行しても問題ないようです。アプリに変更があったことを検出したり、移行ファイルをアプリに追加したりすることはありません。

アプリを移行に強制し、本質的に「これは私のベースです」などと言う方法はありますか? または、何か不足していますか?

それがまったく役立つ場合、私のデータベースはPostgreSQLのものです。

0 投票する
2 に答える
7162 参照

python - Django Polls チュートリアル アプリの投票で変更が検出されませんでした

私は Django Polls チュートリアルを進めています。コマンド「python manage.py makemigrations polls」を試していますが、「アプリ 'polls' で変更が検出されませんでした」というメッセージが引き続き表示されます。

何が間違っているのか、どうすれば別の方法で実行できるのか、あるいはメッセージの意味さえ理解できません。

明確にするために編集:

チュートリアルのプリントアウトのようなものを期待しています:

そして、チュートリアルの後半で、コマンドを入力するように要求されたときに、python manage.py sqlmigrate polls 0001示されているような何らかの印刷物が得られます (これはかなり長いです)。https://docs.djangoproject.com/en/1.7/intro/tutorial01/のチュートリアルに取り組んでいます

代わりに、私は得る

0 投票する
7 に答える
31890 参照

django - Django 1.7 で単体テストを実行するときに移行を無効にする

Django 1.7では、データベースの移行が導入されました。

Django 1.7 で単体テストを実行すると、移行が強制され、時間がかかります。したがって、django の移行をスキップして、最終状態でデータベースを作成したいと思います。

コードのその部分がテストされないため、移行を無視することは悪い習慣になる可能性があることを私は知っています。しかし、そうではありません。CI テスト サーバー (jenkins) で完全な移行を実行しています。速度が重要なローカル テストでの移行をスキップしたいだけです。


いくつかのコンテキスト:

Django 1.6まで、South を使用する場合はSOUTH_TESTS_MIGRATE設定を使用しました。

デフォルトでは、South の syncdb コマンドは、非対話モードで実行されている場合にも移行を適用します。これには、テストの実行時も含まれます。テストを実行するたびに、すべての移行が実行されます。

テスト ランナーで移行の代わりに syncdb を使用する場合 (たとえば、移行の適用に時間がかかりすぎる場合) は、settings.py で SOUTH_TESTS_MIGRATE = False を設定するだけです。

ただし、syncdbはもう存在しません。現在はmigrateになっています。

Django 1.8からは--keepdbパラメータを使用します。

--keepdb オプションを使用して、テスト実行間でテスト データベースを保持できます。これには、作成アクションと破棄アクションの両方をスキップできるという利点があり、特に大規模なテスト スイートの場合、テストの実行時間が大幅に短縮されます。テスト データベースが存在しない場合は、最初の実行時に作成され、その後の実行ごとに保持されます。テスト スイートを実行する前に、未適用の移行もテスト データベースに適用されます。

したがって、この質問は Django 1.7 に限定されています。

0 投票する
1 に答える
6979 参照

django - Django 1.7c2 で移行を実行するときの循環依存エラー

https://docs.djangoproject.com/en/1.7/topics/migrations/でdjangoの移行について読んでいます。また、github の 1.7.x ブランチのコミットを確認したところ、この問題が解決された可能性があることがわかりました。残念ながら、移行を実行すると、まだエラーが発生します。--fake オプションでも同じエラーが発生します。

次の移行があります。

「人」アプリの移行:

「場所」アプリの移行:

今、私は移行を実行します

これは私が得るエラーです

完全なエラーは、http: //pastebin.com/jixK6Ve2で確認できます。

私の質問は、修正が必要な django コードにまだ何かがあるかどうかです。修正されたチケットを参照してください: https://code.djangoproject.com/ticket/22932。そうでない場合、循環依存エラーを回避するために移行を 2 つ以上のステップに分割するオプションはありますか?

0 投票する
2 に答える
46324 参照

python - Django 1.7 での最初の移行から移行するにはどうすればよいですか?

いくつかのモデルを使用して新しいアプリを作成しましたが、いくつかのモデルがよく考えられていないことに気付きました。コードをコミットしていないので、データベースを最新の良好な状態に移行し、より良いモデルで移行をやり直すのが賢明です。この場合、最後の良好な状態は、新しいアプリが存在しないデータベースです。

Django 1.7 の最初の移行から戻すにはどうすればよいですか?

できるSouthこと:

<app>移行履歴から消去され、 のすべてのテーブルが削除されます<app>

Django 1.7 移行でこれを行うには?

0 投票する
1 に答える
879 参照

django - Django 1.7 移行の前に South 移行を実行するための推奨される方法は何ですか?

特定の順序で実行する必要があるかなりの量のカスタム SQL を含むプロジェクトなど、南部への移行が多いプロジェクトがいくつかあります。Django 1.7 にアップグレードした後、South を使用するようにプロジェクトを変換する方法に関する推奨事項は次のとおりです ( Django ドキュメントから)。

South で作成された既存の移行が既にある場合、django.db.migrations を使用するためのアップグレード プロセスは非常に簡単です。

  • すべてのインストールが移行で完全に最新であることを確認してください。
  • INSTALLED_APPS から「南」を削除します。
  • すべての (番号付きの) 移行ファイルを削除しますが、ディレクトリ__init__.pyは削除しないか、.pyc ファイルも削除してください。
  • python manage.py makemigrations を実行します。Django は空の移行ディレクトリを確認し、新しい形式で新しい初期移行を行う必要があります。
  • python manage.py migrate を実行します。Django は、最初の移行のテーブルが既に存在することを確認し、それらを実行せずに適用済みとしてマークします。

要するに、「既存の移行を消去すると、Django が残りを処理します」。

ここで言及されていないのは、既存の南部の移行がモデルの変更だけで構成されているのではなく、順番に実行する必要がある直接の SQL、データの移行などが含まれている場合の対処方法です。この場合、自動生成された Django の移行では多くのことが見落とされます。これらの変更のすべてがモデル ファイルのイントロスペクションから明らかになるわけではないためです。

理想的には、South を使用して既存の移行を実行し、その後 Django の移行を引き継ぐことができます。これについて最善の方法は何ですか?これが不可能な場合、またはあまり推奨されない場合、最善の代替手段は何ですか?