私はDjangoを約2年間利用してきましたが、私はいつも賛成していた機能があります。faking migrations。Django migrate --fakeと--fake-initialについて説明しました
私はかなりどこでも見てきたと私は得ることができ、ほとんどの情報は、それがあることを述べdocumentationからです:
--fake
を持つものとして移行をマークするためにDjangoに指示しますまたは が適用されていませんが、実際にはSQLを実行せずに データベーススキーマを変更する必要はありません。
これは、高度なユーザーが手動で変更を適用している場合、現在の の移行状態を直接操作するためのものです。 は、--fakeを使用すると、 の移行を正しく実行させるには、手動で復旧する必要がある状態に移行状態 テーブルを入れるリスクがあると警告しました。
--fake-初期
その移行のすべてのたcreateModel の操作によって作成されたすべてのモデルの名前を持つすべてのデータベース 表がすでに存在する場合Djangoはアプリケーションの最初の移行をスキップすることができます。このオプションは、最初に が移行の使用を前提としているデータベースに対して移行を実行するときに使用するために、 を使用することを意図しています。ただし、このオプションでは一致するテーブル名よりも一致するデータベーススキーマのために をチェックしません。 が初期移行に記録されているものと一致すると確信している場合は、 のみ安全に使用できます。
私は一般的なアイデアを得て、なぜこの機能を使いたいのですか?しかし、これは、が上級ユーザーのみを対象としている部分を理解していません。
シーンの背景に何が起こっているのか、なぜ手動で復旧する必要があるのか説明できますか。
NOTE
私は、移行を偽造したときに実行される正確な生のSQLクエリを探していませんよ。私はシーンの後ろで起こっていることの一般的なアイデアと、おそらく のマイグレーションを偽って、makemigrations
が正しく動作しない状態になる理由の例を探しています。
答えをありがとう!移行を偽った現実の状況を見るのに役立ちましたが、私はまだ移行の偽装中に何が起きているのか疑問に思っています。 – scharette
@scharetteはい、有用な質問です。説明された。 – hynekcer