5

私の django プロジェクトでは、モデルにタグ付け機能を追加するためにdjango-taggitを使用しています。

タグを追加する移行では、最初のtaggit移行も依存関係としてリストされます。

dependencies = [
    ('taggit', '0001_initial'),
    # …
]

後で、 taggitを含むすべての場所を削除しましINSTALLED_APPSた。

問題は、django がtaggitに属する移行を解決できず、エラーが発生することです。

このシナリオで推奨されるソリューションは何ですか?

2 段階の戦略を考えることができます。

  1. プロジェクトを実行しているすべてのサーバーが最新の状態になるまでtaggitを保持しますINSTALLED_APPS
  2. その後、マイグレーションをスカッシュして、フィールドが表示されないようにしてから、 taggitを削除します。INSTALLED_APPS
4

1 に答える 1

7

それはちょうどいいです。押しつぶされた移行を作成する前に、すべてのサーバーが最新になるのを待つ必要はありません。ドキュメントから:

これらのファイルは、以前に圧縮された移行を置き換えることを示すようにマークされているため、古い移行ファイルと共存でき、Django は履歴のどこにいるかに応じてそれらをインテリジェントに切り替えます。

taggit最後のステップとして、古い移行ファイルを削除することもできます。これにより、ソースのどこにも言及されなくなります。

次に、次の方法で、押しつぶされた移行を通常の初期移行に移行する必要があります。

  • 置き換えるすべての移行ファイルを削除する

  • 押しつぶされた移行の Migration クラスの replaces 引数を削除します (これは、Django が押しつぶされた移行であることを伝える方法です)。

于 2015-01-14T18:06:35.197 に答える