2013-12-23 3 views
5

現在、私はDjangoプロジェクトでマイグレーションを使用していませんが、まもなく予定しています。私はSouthが事実上のツールであることを理解していますが、それを使用するつもりでしたが、Djangoプロジェクトサイトで、開発バージョン(1.7としてリリースされると思います)にコア移行ツールがあり、migrateとして実行しました。DjangoのコアマイグレーションツールとDjangoのデータマイグレーションのためのサウス

マイグレーションツールを使った経験はほとんどありません(私はDjango-CMSをサウスにインストールして1日程度使って遊んでいました)、これは初心者のための最良のものですか?

また、マイグレーションそのものがかなり若く、Djangoのバージョンがさらにそうであるため、私はこの時点で南に行く方が良いでしょうか?

最後にもう1つの質問は私が南部(私のDjangoプロジェクトのほとんどはv1.5です)から始まり、1.6から1.7にアップグレードすると、Djangoのコアマイグレーションに変換するのに問題がありますか?

+0

関連する質問:南のアプリからDjango 1.7へのアップグレードパスを提供する方法http://stackoverflow.com/questions/22597240/upgrade-path-for-re-usable-apps-with-south-and-django -1-7-マイグレーション – stefanfoulis

答えて

3

マイグレーション履歴を簡単に削除して、他の種類の移行ツールを簡単に初期化できます。

Djangoコアの移行は南に基づいているため、と推定されます。 Djangoコアの移行に南の移行履歴をエクスポートすることは可能です。

Djangoコアの移行はまだリリースされておらず、あなたの目的は学ぶことなので、私はSouthから始めることをお勧めします。

+0

私は南にインストールされ、私のアプリを変換し、うまくいきました。私はDjangoをアップグレードする準備がまだ整っていないので、この計画は良い考えのようです。ありがとう。 – nicorellius

4

この変更についてのAndrew Godwin(作成者またはDjango Coreの移行)の言葉は次のとおりです。「深刻な制限にぶつかる南の4歳のデザイン、Django自体に移行サポートを追加するときです。南の移行履歴をDjangoのコア移行にエクスポートする機能

あなたができることなら、1月20日を待つことをお勧めします:hereが表示されているように、Core MigrationのDjango 1.7 alpha版がリリースされます。

最終的にはAndrew Godwin worked on South himselfなので、Django Core Migrationはまったく新しいツールではなく、South v2として表示されるべきです。

次に、コアの移行がリリースされるとすぐにサウスが実際には維持されないことをかなり確信で​​きます。

私はいくつかの時間を待っていると、この新しいツールにチャンスを与え:)

+0

良い点+1 ... – nicorellius

3

ドキュメントを南からのアップグレードはDjango 1.7を議論するために提案する理由です:

If you already have pre-existing migrations created with South 0.x, then the upgrade process to use django.db.migrations is quite simple:

  • Ensure all installs are fully up-to-date with their migrations
  • Delete all your (numbered) migration files, but not the directory or init.py - make sure you remove the .pyc files too.
  • Run python manage.py makemigrations. Django should see the empty migration directories and make new initial migrations in the new format.
  • Run python manage.py migrate. Django will see that the tables for the initial migrations already exist and mark them as applied without running them.

That’s it! The only complication is if you have a circular dependency loop of foreign keys; in this case, makemigrations might make more than one initial migration, and you’ll need to mark them all as applied using:

python manage.py migrate --fake yourappnamehere 

hereから)。

+0

> Djangoは、最初の移行用の表がすでに存在し、それらを実行せずに適用済みであることを確認します。 どうやら、必ずしもそうではありません。 "django.db.utils.OperationalError:table" [table] "というエラーが発生しました。"マイグレーションアプリケーション0001を実行中 - それはそれを修正します。 – wes

関連する問題