【发布时间】:2017-06-10 12:59:00
【问题描述】:
我有一个 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迁移模块在磁盘上的位置而不是模块名?
【问题讨论】:
标签: python django python-2.7 django-migrations