@chaturanga

Как выполнить консольную команду из подкаталога?

Файлы консольных команд располагаются в каталоге ./app/management/commands/ и соответственно вызываются как manage.py command1.
Как сделать, чтобы их можно было поместить в подкаталоги и вызывать а-ля manage.py subdir1.command1?
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
В Django каждая консольная команда должна быть модулем, который располагается в определенной структуре каталогов, чтобы Django мог его обнаружить и зарегистрировать.

Если прям жмет, то можно разместить __init__.py в каждом каталоге до консольной команды, с импортом вида:
from .command1 import Command1

# app/
#    management/
#        __init__.py <-- this import
#        commands/
#            __init__.py <-- and this import
#                command1/
#                    __init__.py <-- and this import

Это позволит Django обнаруживать команды, находящиеся в подкаталогах, но при этом требует, чтобы каждая команда была в своем собственном подкаталоге и имела собственный __init__.py.

Кстати, имя команды которое Вы используете при вызове manage.py, должно соответствовать имени каталога, в котором находится команда. Соответственно, если Вы разместили команду в app/management/commands/subdir1/command1, Вы всё равно вызываете её как manage.py command1, не указывая subdir1. Django не поддерживает вызов команд с использованием точечной нотации для обозначения подкаталогов, как в Вашем примере subdir1.command1.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы