Django subcommands in subdirectories
$ pip install django-subcommandir
my_app
├── ...
├── management
│ ├── commands
│ │ ├── __init__.py
│ │ ├── load
│ │ │ ├── __init__.py
│ │ │ ├── month_report.py
│ │ │ └── year_report.py
│ │ ├── my_app_load.py
│ ├── __init__.py
# .../management/commands/my_app_load.py
from subcommandir import BaseCommand
class Command(BaseCommand):
subcommand_dir = 'load'
# .../management/commands/load/month_report.py
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--start', ...)
...
def handle(self, *args, **options):
...
Command calls:
$ python manage.py my_app_load year_report
$ python manage.py my_app_load month_report --start="2021-01" --end="2021-02"
or
from django.core.management import call_command
def load_year_report():
call_command('my_app_load', 'year_report')
def load_month_report():
call_command('my_app_load', 'month_report', start=...)
MIT