自定义 Django 命令的自定义位置

Lau*_*ius 3 python django

在我的 Django 项目中,我有多个应用程序,并且想添加对所有应用程序Command通用的自定义 ( populate_db)。但是,Django 似乎仅从位置注册自定义命令INSTALLED_APPS(即您必须将management文件夹放置在应用程序的文件夹中)。

\n\n

有没有办法将management文件夹放入project_folder. 这是所需的目录结构:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app_1\n|   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.py\n|   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app_2\n|   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.py\n|   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project_folder\n|   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 settings.py\n|   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 management\n|       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n|       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 commands\n|           \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n|           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 populate_db.py    \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 manage.py\n
Run Code Online (Sandbox Code Playgroud)\n

Ala*_*air 11

Django 仅查找management/commands已安装应用程序的管理命令。没有其他方法可以注册它们。

在你的情况下,你可以添加project_folder到你的INSTALLED_APPS,Django 应该找到你的管理命令。

另一种常见的方法是创建一个名为'core'或 的应用程序'main',其中包含适用于整个项目的实用程序,例如populate_db管理命令。