我们有一个第三方库,我们在Django 1.9应用程序中使用它。 我们希望通过一些原始应用程序中没有的功能(针对MongoDB),修改该应用程序。 我们目前通过我们自己的原始库进行此操作,但希望使更改有点更加正交,以便最终可能将它们拆分上游。
我们尝试在应用程序
我们尝试在应用程序
config ready()
期间打补丁,但是模型导入在django.app.registry.populate()
中的此调用之前处理,并且在\__init__
中执行会受到apps_ready == False
的影响。 在生命周期的哪个阶段执行此操作是最好的呢?class MongoConfig(AppConfig):
def __init__(self, app_name, app_module):
super(MongoConfig, self).__init__(app_name, app_module)
for p in patches:
patch(*p)
def patch(old, new):
old_module, old_item = split_mod(old)
new_module, new_item = split_mod(new)
print('patching {0} with {1}'.format(old, new))
old_module = import_module(old_module)
new_module = import_module(new_module)
setattr(old_module, old_item, getattr(new_module, new_item))
__init__.py
和AppConfig.ready
回调中都实现了补丁。我不知道有人怎么能给你一个不纯粹猜测的答案。什么方法适用于哪里取决于您在问题中没有提供的细节。 - Louis