私は自分のプロジェクトからいくつかのカスタムフィールドを含むアプリケーションを削除しました。私がマイグレーションを実行しようとすると、当然ImportError
が得られます。マイグレーションを実行するために削除されたカスタムフィールドをどうやって模擬しますか?
from django.db.models.fields import IntegerField
class SomeField(IntegerField):
def get_internal_type(self):
return "SomeField"
def db_type(self, connectio=None):
return 'integer'
def clean(self, value):
# some custom cleanup
pass
だから、それらのどれもが任意のデータベースレベルのカスタマイズを含まない:これらのフィールドは非常に基本的なカスタマイズ以下のようなものでした。
このコードを削除すると、移行が作成されて以降の移行がすべて正常に実行されました。しかし、削除前のデータベースでそれらを実行しようとすると、私は間違いを認識しました。
ベアボーンアプリを再作成してこれらのインポートを有効にできますが、理想的にはサウスがこれらの問題を解決する仕組みを持っているかどうかを知りたいのですが?または、ベストプラクティスがありますか?マイグレーションを変更してコードベースに触れさせないようにすれば、これらの問題を解決することができれば涼しいでしょう。
(ジャンゴ1.3、南0.7.3)
右。しかし、私はVCSの巻き戻しを伴わないオプションを探求したいと思っています。結局のところ、私はHEADを使ってデータベースをシードできるはずです。 – muhuk
@muhuk私はそのようなことがあることを知らない。ただし、論理的には適切な限り移行を変更でき、本番DBのスキーマやテストDBの生成には適しています。たとえば、一部のフィールドを追加して削除するだけの最新の移行を削除したり、移行ファイル内のモデル行を変更して特定のフィールドを削除したりすることができます。慎重に行ってください。 – okm