Skip to main content
 首页 » 编程设计

python之如果多个Django应用定义相同的自定义管理命令,使用哪个

2024年10月25日35over140

docs对这个问题保持沉默。命令是否会按顺序注册,后面的应用程序(按 settings.INSTALLED_APPS 顺序)会覆盖以前的命令(无论是来自其他应用程序的自定义命令还是内置的 Django 命令)?

请您参考如下方法:

从当前的 1.7 版本开始,答案是肯定的。

参见 this line在 Django 源代码中查看实现逻辑的位置:按照 settings.INSTALLED_APPS 元组的应用程序顺序,每个应用程序的管理命令都添加到命令字典(使用 Django 的内置-在命令 here 中),任何给定的命令名称都有一个插槽,因此最后一个添加的命令会覆盖任何以前的应用程序(或 Django 的内置)具有相同名称的命令;执行命令时(代码 here),Django 使用上面的字典来决定实际使用哪个命令逻辑。

请注意,我还没有找到这方面的任何文档,因此从技术上讲,它应该被视为非官方行为。