如果多个 Django 应用程序定义了相同的自定义管理命令,使用哪个?

Gho*_*r21 5 python django manage.py

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

Gho*_*r21 4

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

请参阅Django 源代码中的这一行,了解逻辑的实现位置:按照每个元组的应用程序顺序,将每个应用程序的管理命令添加到命令字典中(此处settings.INSTALLED_APPS使用 Django 的内置命令进行初始化),其中任何给定命令名称的单个插槽,以便最后一个添加的命令会覆盖任何先前应用程序(或 Django 的内置)具有相同名称的命令;当执行命令(此处为代码)时,Django 使用上面的字典来决定实际使用哪个命令逻辑。

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