我遇到了一个问题,即有多个应用试图在Django项目中覆盖相同的管理命令。
INSTALLED_APPS
中定义的应用,或者最后定义的应用?对于上下文,我试图让django_pdb
(请参阅github)更好地与south
和django.contrib.staticfiles
合作。
答案 0 :(得分:3)
2。5年后,如果有人遇到同样的问题并在谷歌搜索后登陆,我已经制作了一个小型django应用来处理这种情况:django-mcmo('管理命令多个覆盖'),可在pypi上找到。它有局限性,但按预期工作。
使用django 1.4到1.8和py 2和3,欢迎bitbucket repo。
答案 1 :(得分:1)
最简单的答案我知道的是:构建您的项目,以便您可以更改其中一个并记录您的更改,以便将其应用于将来的版本。
对于我喜欢的项目:
/myproject
/lib
/app1
/app2
/app3
然后显式地将/ lib添加到setup.py
中的路径import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
import sys
lib_dir = os.path.join(PROJECT_PATH, 'lib')
if lib_dir not in sys.path[:4]:
sys.path.insert(1, os.path.join(PROJECT_PATH, 'lib'))
我可能比平均水平更有可能拿一个应用程序,安装它,然后改变它的10%,以完全按我的意愿工作。
这样做的好处是:1)大多数依赖项随代码一起提供并在GIT中进行跟踪2)如果您从同一台计算机运行多个应用程序,则系统范围内的更改不会意外地导致应用程序中的错误)易于更改,修订历史记录,应用程序中的任何内容和所有内容。
没有深入到南方的管理命令中,并且从未使用过django_pdb,您的特定问题可能无法通过“制作本地副本并重命名其中一种”方法解决,但我会分享以防万一。< / p>