1

(たとえば) git を使用している数人で Django プロジェクトを開発しているとします。そうした場合git pull、南部への移行が発生する場合がありますが、(何らかの理由で) 気付かない場合があります。その後、開発を続けると、移行を行っていないために Python 例外が発生する可能性があります。場合によっては、これを忘れたことに気付くまでに時間がかかることがあります。これはかなり面倒です。

そのため、サウスはすべての移行を行っていないことを検出できず、そうであれば例外をスローすることはできないのでしょうか?

移行を行わずに開発を続けたい場合は、これをオフにできる設定になる可能性があると思います。

4

2 に答える 2

3

わかりました、それが私のやり方です。

私は3つの移行を伴うアプリを持っていsouth_testます。それは「python manage.py migrate --list」ショーです:

south_test
  (*) 0001_initial
  (*) 0002_auto__add_person
  ( ) 0003_auto__add_field_person_age

それは(そうではない)魔法のコードです:

from south.models import MigrationHistory
from south.migration import Migrations

all_migrations = Migrations('south_test')
applied_migrations = MigrationHistory.objects.filter(app_name='south_test')

not_applied = list(set(all_migrations) - set([migration.get_migration() for migration in applied_migrations]))

これでnot_applied移行が完了しました。ゴーストマイグレーションの詳細があるかもしれません。

詳細migrateは南方の命令を参照。

お役に立てれば!

于 2013-06-26T00:48:09.437 に答える