私はdjangoプロジェクトを持っていますが、私は別の場所(プロジェクト自体ではない)からマイグレーションを取得したいと思います。私は設定ページでMIGRATION_MODULES
を使用しようとしましたが、私はそれをプロジェクトモジュールの中で異なるものにすることしかできませんでした。このようなことはできるが、アプリケーションごとの移行ファイルへのパスが必要になりたい。 私はジャンゴ移行メカニズムに掘っおよび移行をロードし、このコードが見つかりました:私は私のモジュールを取得djangoのマイグレーション - ディスク上の場所からマイグレーションを取得する
# part of loader.py from django.db.migrations
@classmethod
def migrations_module(cls, app_label):
if app_label in settings.MIGRATION_MODULES:
return settings.MIGRATION_MODULES[app_label]
else:
app_package_name = apps.get_app_config(app_label).name
return '%s.%s' % (app_package_name, MIGRATIONS_MODULE_NAME)
def load_disk(self):
"""
Loads the migrations from all INSTALLED_APPS from disk.
"""
self.disk_migrations = {}
self.unmigrated_apps = set()
self.migrated_apps = set()
for app_config in apps.get_app_configs():
# Get the migrations module directory
module_name = self.migrations_module(app_config.label)
was_loaded = module_name in sys.modules
try:
module = import_module(module_name)
except ImportError as e:
- それはimport_moduleラインで失敗を。 djangoに、モジュール名の代わりにディスク上の移行モジュールの場所を伝える方法はありますか?