2013-07-31 45 views
7

想象一下,在我的django项目中有两个或更多应用程序,当我只有一个应用程序A时,我能够成功编写和执行自定义manage.py命令。如何在多个应用程序中编写自定义django manage.py命令

现在我有一个新应用B,并在https://docs.djangoproject.com/en/dev/howto/custom-management-commands/中提到我创建了B/manangement/commands的目录结构并写了一个自定义模块。

当我运行python manage.py时,它总是抱怨Unknown command。但是,如果我将此命令移动到其他应用程序,即文件夹A/management/commands,然后运行python manage.py <command>,它可以无缝工作。

任何想法如何解决这个问题?

+0

不是没有你告诉我们你到底做了什么。 –

+1

可能您尚未在设置中的已安装应用程序中添加B. – Babu

+0

我想是一个错字,但更好地指出。 'manangement'这个词拼写错误。 –

回答

16

正如@Babu在评论中所说,看起来你可能没有在你的settings.py中添加你的应用到INSTALLED_APPS

也可能是因为缺少managementcommands文件夹中的__init__.py文件(在python模块中是必需的)。

另外,(可惜这么说)你可能拼错了“管理”或“命令”,甚至是你正在运行的命令的名字。

+0

谢谢,__init__.py文件在内部目录中,在较高目录中错过。 – user1335608

0

最有可能的,你不包括应用B在你的settings.py

如果你只是运行python manage.py不指定命令,将打印命令的Django可以找到的名单。

这可以帮助排除拼写错误的命令名称,但不回答你是否没有作出managementcommands两个包的问题,​​或者如果应用B只需在您settings.INSTALLED_APPS

0

没有列出这看起来像你还没有注册你的应用程序BINSTALLED_APPS在我们的settings.py。 您还需要在两个文件夹(管理命令)中添加一个__init__.py文件以使其成为一个包。确保你拼写正确的文件夹名称。

相关问题